Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6d8d25ee authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

(DO NOT MERGE) Update fullscreen mode also at onStartInputView

This is a cherry-pick cheof I190a71f7 from Master.

Bug: 5315001
Change-Id: I76c756eeecf21eec4c88dd4558d5c50f10ff3d3c
parent 43d8dee6
Loading
Loading
Loading
Loading
+0 −10
Original line number Diff line number Diff line
@@ -26,16 +26,12 @@ public class EditorInfoCompatUtils {
            EditorInfo.class, "IME_FLAG_NAVIGATE_NEXT");
    private static final Field FIELD_IME_FLAG_NAVIGATE_PREVIOUS = CompatUtils.getField(
            EditorInfo.class, "IME_FLAG_NAVIGATE_PREVIOUS");
    private static final Field FIELD_IME_FLAG_NO_FULLSCREEN = CompatUtils.getField(
            EditorInfo.class, "IME_FLAG_NO_FULLSCREEN");
    private static final Field FIELD_IME_ACTION_PREVIOUS = CompatUtils.getField(
            EditorInfo.class, "IME_ACTION_PREVIOUS");
    private static final Integer OBJ_IME_FLAG_NAVIGATE_NEXT = (Integer) CompatUtils
            .getFieldValue(null, null, FIELD_IME_FLAG_NAVIGATE_NEXT);
    private static final Integer OBJ_IME_FLAG_NAVIGATE_PREVIOUS = (Integer) CompatUtils
            .getFieldValue(null, null, FIELD_IME_FLAG_NAVIGATE_PREVIOUS);
    private static final Integer OBJ_IME_FLAG_NO_FULLSCREEN = (Integer) CompatUtils
            .getFieldValue(null, null, FIELD_IME_FLAG_NO_FULLSCREEN);
    private static final Integer OBJ_IME_ACTION_PREVIOUS = (Integer) CompatUtils
            .getFieldValue(null, null, FIELD_IME_ACTION_PREVIOUS);

@@ -51,12 +47,6 @@ public class EditorInfoCompatUtils {
        return (imeOptions & OBJ_IME_FLAG_NAVIGATE_PREVIOUS) != 0;
    }

    public static boolean hasFlagNoFullscreen(int imeOptions) {
        if (FIELD_IME_FLAG_NO_FULLSCREEN == null)
            return false;
        return (imeOptions & OBJ_IME_FLAG_NO_FULLSCREEN) != 0;
    }

    public static void performEditorActionNext(InputConnection ic) {
        ic.performEditorAction(EditorInfo.IME_ACTION_NEXT);
    }
+17 −18
Original line number Diff line number Diff line
@@ -158,7 +158,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar

    private View mKeyPreviewBackingView;
    private View mSuggestionsContainer;
    private int mSuggestionsStripHeight;
    private SuggestionsView mSuggestionsView;
    private Suggest mSuggest;
    private CompletionInfo[] mApplicationSpecifiedCompletions;
@@ -612,7 +611,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
        mSuggestionsView = (SuggestionsView) view.findViewById(R.id.suggestions_view);
        if (mSuggestionsView != null)
            mSuggestionsView.setListener(this, view);
        mSuggestionsStripHeight = (int)mResources.getDimension(R.dimen.suggestions_strip_height);
    }

    @Override
@@ -681,6 +679,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar

        if (mSuggestionsView != null)
            mSuggestionsView.clear();
        // The EditorInfo might have a flag that affects fullscreen mode.
        updateFullscreenMode();
        setSuggestionStripShownInternal(
                isSuggestionsStripVisible(), /* needsInputViewShown */ false);
        // Delay updating suggestions because keyboard input view may not be shown at this point.
@@ -945,14 +945,9 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
            final boolean shouldShowSuggestions = shown
                    && (needsInputViewShown ? mKeyboardSwitcher.isInputViewShown() : true);
            if (isFullscreenMode()) {
                // No need to have extra space to show the key preview.
                mKeyPreviewBackingView.setVisibility(View.GONE);
                mSuggestionsContainer.setVisibility(
                        shouldShowSuggestions ? View.VISIBLE : View.GONE);
            } else {
                // We must control the visibility of the suggestion strip in order to avoid clipped
                // key previews, even when we don't show the suggestion strip.
                mKeyPreviewBackingView.setVisibility(View.VISIBLE);
                mSuggestionsContainer.setVisibility(
                        shouldShowSuggestions ? View.VISIBLE : View.INVISIBLE);
            }
@@ -971,12 +966,14 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
            return;
        final int backingHeight = (mKeyPreviewBackingView.getVisibility() == View.GONE) ? 0
                : mKeyPreviewBackingView.getHeight();
        final int extraHeight = mSuggestionsContainer.getHeight() + backingHeight;
        final int suggestionsHeight = (mSuggestionsContainer.getVisibility() == View.GONE) ? 0
                : mSuggestionsContainer.getHeight();
        final int extraHeight = backingHeight + suggestionsHeight;
        int touchY = extraHeight;
        // Need to set touchable region only if input view is being shown
        if (mKeyboardSwitcher.isInputViewShown()) {
            if (mSuggestionsContainer.getVisibility() == View.VISIBLE) {
                touchY -= mSuggestionsStripHeight;
                touchY -= suggestionsHeight;
            }
            final int touchWidth = inputView.getWidth();
            final int touchHeight = inputView.getHeight() + extraHeight
@@ -994,16 +991,18 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar

    @Override
    public boolean onEvaluateFullscreenMode() {
        final EditorInfo ei = getCurrentInputEditorInfo();
        if (ei != null) {
            final int imeOptions = ei.imeOptions;
            if (EditorInfoCompatUtils.hasFlagNoFullscreen(imeOptions))
                return false;
            if ((imeOptions & EditorInfo.IME_FLAG_NO_EXTRACT_UI) != 0)
                return false;
        return super.onEvaluateFullscreenMode()
                && mResources.getBoolean(R.bool.config_use_fullscreen_mode);
    }

        return mResources.getBoolean(R.bool.config_use_fullscreen_mode);
    @Override
    public void updateFullscreenMode() {
        super.updateFullscreenMode();

        if (mKeyPreviewBackingView == null) return;
        // In fullscreen mode, no need to have extra space to show the key preview.
        // If not, we should have extra space above the keyboard to show the key preview.
        mKeyPreviewBackingView.setVisibility(isFullscreenMode() ? View.GONE : View.VISIBLE);
    }

    @Override