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

Commit 5648d934 authored by Josh Tsuji's avatar Josh Tsuji Committed by Automerger Merge Worker
Browse files

Merge "Hide the IME using InputMethodManagerInternal, because doing it that...

Merge "Hide the IME using InputMethodManagerInternal, because doing it that way actually works." into rvc-dev am: 88e88190 am: 644d1add

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11948939

Change-Id: I7cfe3666b94962ddb1c099babe8fa311342b92f6
parents 2e6898f3 644d1add
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -46,7 +46,8 @@ import java.lang.annotation.Retention;
        SoftInputShowHideReason.HIDE_SETTINGS_ON_CHANGE,
        SoftInputShowHideReason.HIDE_POWER_BUTTON_GO_HOME,
        SoftInputShowHideReason.HIDE_DOCKED_STACK_ATTACHED,
        SoftInputShowHideReason.HIDE_RECENTS_ANIMATION})
        SoftInputShowHideReason.HIDE_RECENTS_ANIMATION,
        SoftInputShowHideReason.HIDE_BUBBLES})
public @interface SoftInputShowHideReason {
    /** Show soft input by {@link android.view.inputmethod.InputMethodManager#showSoftInput}. */
    int SHOW_SOFT_INPUT = 0;
@@ -140,4 +141,10 @@ public @interface SoftInputShowHideReason {
     * intercept touch from app window.
     */
    int HIDE_RECENTS_ANIMATION = 18;

    /**
     * Hide soft input when {@link com.android.systemui.bubbles.BubbleController} is expanding,
     * switching, or collapsing Bubbles.
     */
    int HIDE_BUBBLES = 19;
}
+1 −0
Original line number Diff line number Diff line
@@ -79,6 +79,7 @@ interface IStatusBarService
    void onNotificationSettingsViewed(String key);
    void onNotificationBubbleChanged(String key, boolean isBubble, int flags);
    void onBubbleNotificationSuppressionChanged(String key, boolean isSuppressed);
    void hideCurrentInputMethodForBubbles();
    void grantInlineReplyUriPermission(String key, in Uri uri, in UserHandle user, String packageName);
    void clearInlineReplyUriPermissions(String key);

+13 −8
Original line number Diff line number Diff line
@@ -483,12 +483,13 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
    }

    /**
     * Dispatches a back press into the expanded Bubble's ActivityView if its IME is visible,
     * causing it to hide.
     * Hides the current input method, wherever it may be focused, via InputMethodManagerInternal.
     */
    public void hideImeFromExpandedBubble() {
        if (mStackView != null) {
            mStackView.hideImeFromExpandedBubble();
    public void hideCurrentInputMethod() {
        try {
            mBarService.hideCurrentInputMethodForBubbles();
        } catch (RemoteException e) {
            e.printStackTrace();
        }
    }

@@ -693,8 +694,8 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
        if (mStackView == null) {
            mStackView = new BubbleStackView(
                    mContext, mBubbleData, mSurfaceSynchronizer, mFloatingContentCoordinator,
                    mSysUiState, this::onAllBubblesAnimatedOut,
                    this::onImeVisibilityChanged);
                    mSysUiState, this::onAllBubblesAnimatedOut, this::onImeVisibilityChanged,
                    this::hideCurrentInputMethod);
            mStackView.addView(mBubbleScrim);
            if (mExpandListener != null) {
                mStackView.setExpandListener(mExpandListener);
@@ -1589,9 +1590,13 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
        @Override
        public void onBackPressedOnTaskRoot(RunningTaskInfo taskInfo) {
            if (mStackView != null && taskInfo.displayId == getExpandedDisplayId(mContext)) {
                if (mImeVisible) {
                    hideCurrentInputMethod();
                } else {
                    mBubbleData.setExpanded(false);
                }
            }
        }

        @Override
        public void onSingleTaskDisplayDrawn(int displayId) {
+0 −1
Original line number Diff line number Diff line
@@ -466,7 +466,6 @@ public class BubbleExpandedView extends LinearLayout {
    @Override
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        hideImeIfVisible();
        mKeyboardVisible = false;
        mNeedsNewHeight = false;
        if (mActivityView != null) {
+19 −17
Original line number Diff line number Diff line
@@ -383,6 +383,11 @@ public class BubbleStackView extends FrameLayout
     */
    public final Consumer<Boolean> mOnImeVisibilityChanged;

    /**
     * Callback to run to ask BubbleController to hide the current IME.
     */
    private final Runnable mHideCurrentInputMethodCallback;

    /**
     * The currently magnetized object, which is being dragged and will be attracted to the magnetic
     * dismiss target.
@@ -560,7 +565,7 @@ public class BubbleStackView extends FrameLayout
                        mMagneticTarget,
                        mIndividualBubbleMagnetListener);

                hideImeFromExpandedBubble();
                hideCurrentInputMethod();

                // Save the magnetized individual bubble so we can dispatch touch events to it.
                mMagnetizedObject = mExpandedAnimationController.getMagnetizedBubbleDraggingOut();
@@ -732,7 +737,8 @@ public class BubbleStackView extends FrameLayout
            FloatingContentCoordinator floatingContentCoordinator,
            SysUiState sysUiState,
            Runnable allBubblesAnimatedOutAction,
            Consumer<Boolean> onImeVisibilityChanged) {
            Consumer<Boolean> onImeVisibilityChanged,
            Runnable hideCurrentInputMethodCallback) {
        super(context);

        mBubbleData = data;
@@ -868,6 +874,7 @@ public class BubbleStackView extends FrameLayout
        setUpOverflow();

        mOnImeVisibilityChanged = onImeVisibilityChanged;
        mHideCurrentInputMethodCallback = hideCurrentInputMethodCallback;

        setOnApplyWindowInsetsListener((View view, WindowInsets insets) -> {
            onImeVisibilityChanged.accept(insets.getInsets(WindowInsets.Type.ime()).bottom > 0);
@@ -1593,6 +1600,8 @@ public class BubbleStackView extends FrameLayout
        updatePointerPosition();

        if (mIsExpanded) {
            hideCurrentInputMethod();

            // Make the container of the expanded view transparent before removing the expanded view
            // from it. Otherwise a punch hole created by {@link android.view.SurfaceView} in the
            // expanded view becomes visible on the screen. See b/126856255
@@ -1601,11 +1610,6 @@ public class BubbleStackView extends FrameLayout
                if (previouslySelected != null) {
                    previouslySelected.setContentVisibility(false);
                }
                if (previouslySelected != null && previouslySelected.getExpandedView() != null) {
                    // Hide the currently expanded bubble's IME if it's visible before switching
                    // to a new bubble.
                    previouslySelected.getExpandedView().hideImeIfVisible();
                }

                updateExpandedBubble();
                requestUpdate();
@@ -1633,6 +1637,8 @@ public class BubbleStackView extends FrameLayout
            return;
        }

        hideCurrentInputMethod();

        mSysUiState
                .setFlag(QuickStepContract.SYSUI_STATE_BUBBLES_EXPANDED, shouldExpand)
                .commitUpdate(mContext.getDisplayId());
@@ -1816,12 +1822,12 @@ public class BubbleStackView extends FrameLayout
        }
    }

    void hideImeFromExpandedBubble() {
        if (mExpandedBubble != null && mExpandedBubble.getExpandedView() != null) {
            // Hide the currently expanded bubble's IME if it's visible before switching to a new
            // bubble.
            mExpandedBubble.getExpandedView().hideImeIfVisible();
        }
    /**
     * Asks the BubbleController to hide the IME from anywhere, whether it's focused on Bubbles or
     * not.
     */
    void hideCurrentInputMethod() {
        mHideCurrentInputMethodCallback.run();
    }

    private void beforeExpandedViewAnimation() {
@@ -1938,10 +1944,6 @@ public class BubbleStackView extends FrameLayout
        mAnimatingOutSurfaceContainer.setScaleX(0f);
        mAnimatingOutSurfaceContainer.setScaleY(0f);

        if (mExpandedBubble != null && mExpandedBubble.getExpandedView() != null) {
            mExpandedBubble.getExpandedView().hideImeIfVisible();
        }

        // Let the expanded animation controller know that it shouldn't animate child adds/reorders
        // since we're about to animate collapsed.
        mExpandedAnimationController.notifyPreparingToCollapse();
Loading