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

Commit 0e14060b authored by Alan Viverette's avatar Alan Viverette Committed by Android (Google) Code Review
Browse files

Merge "Use clearFocus() when entering touch mode"

parents 2b0ade2f ed7821a6
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -4588,6 +4588,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
    /**
     * Called internally by the view system when a new view is getting focus.
     * This is what clears the old focus.
     * <p>
     * <b>NOTE:</b> The parent view's focused child must be updated manually
     * after calling this method. Otherwise, the view hierarchy may be left in
     * an inconstent state.
     */
    void unFocus() {
        if (DBG) {
+17 −18
Original line number Diff line number Diff line
@@ -3250,27 +3250,26 @@ public final class ViewRootImpl implements ViewParent,
    }

    private boolean enterTouchMode() {
        if (mView != null) {
            if (mView.hasFocus()) {
        if (mView != null && mView.hasFocus()) {
            // note: not relying on mFocusedView here because this could
            // be when the window is first being added, and mFocused isn't
            // set yet.
            final View focused = mView.findFocus();
            if (focused != null && !focused.isFocusableInTouchMode()) {
                    final ViewGroup ancestorToTakeFocus =
                            findAncestorToTakeFocusInTouchMode(focused);
                final ViewGroup ancestorToTakeFocus = findAncestorToTakeFocusInTouchMode(focused);
                if (ancestorToTakeFocus != null) {
                        // there is an ancestor that wants focus after its descendants that
                        // is focusable in touch mode.. give it focus
                    // there is an ancestor that wants focus after its
                    // descendants that is focusable in touch mode.. give it
                    // focus
                    return ancestorToTakeFocus.requestFocus();
                } else {
                        // nothing appropriate to have focus in touch mode, clear it out
                        focused.unFocus();
                    // nothing appropriate to have focus in touch mode, clear it
                    // out
                    focused.clearFocus();
                    return true;
                }
            }
        }
        }
        return false;
    }