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

Commit 93ec9b85 authored by Yuichiro Hanada's avatar Yuichiro Hanada
Browse files

Revert tab key behavior on multiline EditTexts.

This CL reverts ag/10267783 effectively.
ag/10267783 makes tab key insert \t character on multiline text fields,
however, it broke the existing apps which depends on the previous
behavior.

Bug: 154290658
Test: manual - Tab key on multiline text fields advance focus
Test: atest TextViewTest#testKeyNavigation
Change-Id: I9836ce29321ca789bce6636514ce9a8dbf923ada
parent 1ecd4528
Loading
Loading
Loading
Loading
+2 −20
Original line number Diff line number Diff line
@@ -8315,23 +8315,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
        return false;
    }
    /**
     * Returns true if pressing TAB in this field advances focus instead
     * of inserting the character.  Insert tabs only in multi-line editors.
     */
    private boolean shouldAdvanceFocusOnTab() {
        if (getKeyListener() != null && !mSingleLine && mEditor != null
                && (mEditor.mInputType & EditorInfo.TYPE_MASK_CLASS)
                        == EditorInfo.TYPE_CLASS_TEXT) {
            int multilineFlags = EditorInfo.TYPE_TEXT_FLAG_IME_MULTI_LINE
                    | EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE;
            if ((mEditor.mInputType & multilineFlags) != 0) {
                return false;
            }
        }
        return true;
    }
    private boolean isDirectionalNavigationKey(int keyCode) {
        switch(keyCode) {
            case KeyEvent.KEYCODE_DPAD_UP:
@@ -8400,10 +8383,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
            case KeyEvent.KEYCODE_TAB:
                if (event.hasNoModifiers() || event.hasModifiers(KeyEvent.META_SHIFT_ON)) {
                    if (shouldAdvanceFocusOnTab()) {
                    // Tab is used to move focus.
                    return KEY_EVENT_NOT_HANDLED;
                }
                }
                break;
                // Has to be done on key down (and not on key up) to correctly be intercepted.