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

Commit 8a1597b3 authored by Jean Chalard's avatar Jean Chalard
Browse files

Take the input device into account for meta state

Interesting nits about this:
- getMetaState(long) and getMetaState(long, int) do not
  seem to be used anywhere in the framework. Maybe we
  want to skip adding getMetaState(long, KeyEvent) and
  getMetaState(long, int, KeyEvent).
- getMetaState(CharSequence, int) is used extensively
  throughout the code. In some places, a KeyEvent is
  available and should be considered - this change does
  implement this. In many other cases, there is no
  relevant KeyEvent for this action (for example,
  Editor#extractTextInternal). In these cases, the
  behavior is affected by the current latch state, so
  it's fine to leave them as is.

Bug: 8303489

Change-Id: I4a948c497c49e48f83ba1048520e7fe5bfe84727
parent 92291eea
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -22794,7 +22794,9 @@ package android.text.method {
    method public static void clearMetaKeyState(android.text.Editable, int);
    method public long clearMetaKeyState(long, int);
    method public static final int getMetaState(java.lang.CharSequence);
    method public static final int getMetaState(java.lang.CharSequence, android.view.KeyEvent);
    method public static final int getMetaState(java.lang.CharSequence, int);
    method public static final int getMetaState(java.lang.CharSequence, int, android.view.KeyEvent);
    method public static final int getMetaState(long);
    method public static final int getMetaState(long, int);
    method public static long handleKeyDown(long, int, android.view.KeyEvent);
+1 −1
Original line number Diff line number Diff line
@@ -56,7 +56,7 @@ public class ArrowKeyMovementMethod extends BaseMovementMethod implements Moveme
                    if (event.getAction() == KeyEvent.ACTION_DOWN
                            && event.getRepeatCount() == 0
                            && MetaKeyKeyListener.getMetaState(buffer,
                                        MetaKeyKeyListener.META_SELECTING) != 0) {
                                        MetaKeyKeyListener.META_SELECTING, event) != 0) {
                        return widget.showContextMenu();
                    }
                }
+1 −1
Original line number Diff line number Diff line
@@ -75,7 +75,7 @@ public abstract class BaseKeyListener extends MetaKeyKeyListener
        }

        // Alt+Backspace or Alt+ForwardDelete deletes the current line, if possible.
        if (event.isAltPressed() || getMetaState(content, META_ALT_ON) == 1) {
        if (getMetaState(content, META_ALT_ON, event) == 1) {
            if (deleteLine(view, content)) {
                return true;
            }
+1 −1
Original line number Diff line number Diff line
@@ -135,7 +135,7 @@ public class BaseMovementMethod implements MovementMethod {
     */
    protected int getMovementMetaState(Spannable buffer, KeyEvent event) {
        // We ignore locked modifiers and SHIFT.
        int metaState = (event.getMetaState() | MetaKeyKeyListener.getMetaState(buffer))
        int metaState = MetaKeyKeyListener.getMetaState(buffer, event)
                & ~(MetaKeyKeyListener.META_ALT_LOCKED | MetaKeyKeyListener.META_SYM_LOCKED);
        return KeyEvent.normalizeMetaState(metaState) & ~KeyEvent.META_SHIFT_MASK;
    }
+1 −1
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ public class DialerKeyListener extends NumberKeyListener
     * from the KeyEvent.
     */
    protected int lookup(KeyEvent event, Spannable content) {
        int meta = event.getMetaState() | getMetaState(content);
        int meta = getMetaState(content, event);
        int number = event.getNumber();

        /*
Loading