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

Commit dbd299de authored by Yohei Yukawa's avatar Yohei Yukawa
Browse files

Ensure PopupDecorView is not IME-focusable during exit transition.

Currently PopupDecorView temporarily gets FLAG_NOT_FOCUSABLE bit during
exit transition.  When doing this we it is important that PopupDecorView
does not have FLAG_ALT_FOCUSABLE_IM bit, because having both
FLAG_NOT_FOCUSABLE and FLAG_ALT_FOCUSABLE_IM means that PopupDecorView
is IME-focusable.

To prevent IMEs from flickering, this CL ensures that PopupDecorView is
not IME-focusable during exit transition.

Bug: 27396330
Change-Id: I0cc81791b826f7d4257f0b6085c028c796fd9536
parent 77dd59fc
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1651,10 +1651,11 @@ public class PopupWindow {
        // to executing this method, so we can rely on that instead.
        final Transition exitTransition = mExitTransition;
        if (mIsAnchorRootAttached && exitTransition != null && decorView.isLaidOut()) {
            // The decor view is non-interactive during exit transitions.
            // The decor view is non-interactive and non-IME-focusable during exit transitions.
            final LayoutParams p = (LayoutParams) decorView.getLayoutParams();
            p.flags |= LayoutParams.FLAG_NOT_TOUCHABLE;
            p.flags |= LayoutParams.FLAG_NOT_FOCUSABLE;
            p.flags &= ~LayoutParams.FLAG_ALT_FOCUSABLE_IM;
            mWindowManager.updateViewLayout(decorView, p);

            // Once we start dismissing the decor view, all state (including