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

Commit 0b52ed02 authored by Yohei Yukawa's avatar Yohei Yukawa
Browse files

Revert "Rely on IMM#focusOut() to close input session."

This reverts commit 41bb4953.

Ib1b037594ebbb4ad4cf2d59e21c7a8ca9d8dc930 caused Bug 21508503.
Since it looks like a timing issue, many other applications
could be affected potentially.

Bug 21508503 implies that re-enabling IMM#focusOut() globally
requires much more work than we thought.  Probably the memory
leak found in Bug 20820914 should be addressed in a more
conservative way at the moment, e.g., by plumbing events from
ViewGroup to IMMS.

Bug: 21508503
Bug: 20820914
Change-Id: I2228ae0c48ad3d9e0b55875f0dcb5ef8c55b0c5f
parent 85b039f3
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -1306,15 +1306,19 @@ public final class InputMethodManager {
            if (DEBUG) Log.v(TAG, "focusOut: " + view
                    + " mServedView=" + mServedView
                    + " winFocus=" + view.hasWindowFocus());
            // CAVEAT: We have ignored focusOut event in Android L MR-1 and prior.  Need special
            // care when changing the logic here because there are so many cases to be taken into
            // consideration, e.g., WindowManager.LayoutParams.SOFT_INPUT_* flags.
            if (mServedView == view && view.hasWindowFocus()) {
            if (mServedView != view) {
                // The following code would auto-hide the IME if we end up
                // with no more views with focus.  This can happen, however,
                // whenever we go into touch mode, so it ends up hiding
                // at times when we don't really want it to.  For now it
                // seems better to just turn it all off.
                if (false && view.hasWindowFocus()) {
                    mNextServedView = null;
                    scheduleCheckFocusLocked(view);
                }
            }
        }
    }

    static void scheduleCheckFocusLocked(View view) {
        ViewRootImpl viewRootImpl = view.getViewRootImpl();