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

Commit eed724d1 authored by Yuichiro Hanada's avatar Yuichiro Hanada
Browse files

Move copy, cut and paste shortcut handler to onKeyDown().

The shortcut handler for Shift-Delete was added in onKeyShortcut(), but
it's called after onKeyDown() and the event are consumed by
BaseKeyListener before reaching to onKeyShortcut().

Fix: 122079351
Test: atest CtsWidgetTestCases:android.widget.cts.TextViewTest
Change-Id: Ifee0144bdd3c4f0552bc4c4f3e5b844502bc937e
parent 036da579
Loading
Loading
Loading
Loading
+20 −19
Original line number Diff line number Diff line
@@ -8061,6 +8061,26 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                    }
                }
                break;

            case KeyEvent.KEYCODE_FORWARD_DEL:
                if (event.hasModifiers(KeyEvent.META_SHIFT_ON) && canCut()) {
                    if (onTextContextMenuItem(ID_CUT)) {
                        return KEY_EVENT_HANDLED;
                    }
                }
                break;

            case KeyEvent.KEYCODE_INSERT:
                if (event.hasModifiers(KeyEvent.META_CTRL_ON) && canCopy()) {
                    if (onTextContextMenuItem(ID_COPY)) {
                        return KEY_EVENT_HANDLED;
                    }
                } else if (event.hasModifiers(KeyEvent.META_SHIFT_ON) && canPaste()) {
                    if (onTextContextMenuItem(ID_PASTE)) {
                        return KEY_EVENT_HANDLED;
                    }
                }
                break;
        }

        if (mEditor != null && mEditor.mKeyListener != null) {
@@ -10831,25 +10851,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                        return onTextContextMenuItem(ID_PASTE);
                    }
                    break;
                case KeyEvent.KEYCODE_INSERT:
                    if (canCopy()) {
                        return onTextContextMenuItem(ID_COPY);
                    }
                    break;
            }
        } else if (event.hasModifiers(KeyEvent.META_SHIFT_ON)) {
            // Handle Shift-only shortcuts.
            switch (keyCode) {
                case KeyEvent.KEYCODE_FORWARD_DEL:
                    if (canCut()) {
                        return onTextContextMenuItem(ID_CUT);
                    }
                    break;
                case KeyEvent.KEYCODE_INSERT:
                    if (canPaste()) {
                        return onTextContextMenuItem(ID_PASTE);
                    }
                    break;
            }
        } else if (event.hasModifiers(KeyEvent.META_CTRL_ON | KeyEvent.META_SHIFT_ON)) {
            // Handle Ctrl-Shift shortcuts.