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

Commit fb0431b5 authored by Raph Levien's avatar Raph Levien
Browse files

Up/down arrow moves to beginning/end of buffer

With a hardware keyboard, using up arrow within the top line should
move to the beginning of the buffer, to better match desktop text
editing expectations, and similarly for down arrow on the last line.
This patch implements that behavior.

Bug: 17385784
Change-Id: Ia23c23c9cc2462558bca9aaffec7d83e284d55e8
parent d35d826f
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -116,7 +116,8 @@ public class Selection {

    /**
     * Move the cursor to the buffer offset physically above the current
     * offset, or return false if the cursor is already on the top line.
     * offset, to the beginning if it is on the top line but not at the
     * start, or return false if the cursor is already on the top line.
     */
    public static boolean moveUp(Spannable text, Layout layout) {
        int start = getSelectionStart(text);
@@ -149,6 +150,9 @@ public class Selection {

                setSelection(text, move);
                return true;
            } else if (end != 0) {
                setSelection(text, 0);
                return true;
            }
        }

@@ -157,7 +161,9 @@ public class Selection {

    /**
     * Move the cursor to the buffer offset physically below the current
     * offset, or return false if the cursor is already on the bottom line.
     * offset, to the end of the buffer if it is on the bottom line but
     * not at the end, or return false if the cursor is already at the
     * end of the buffer.
     */
    public static boolean moveDown(Spannable text, Layout layout) {
        int start = getSelectionStart(text);
@@ -190,6 +196,9 @@ public class Selection {

                setSelection(text, move);
                return true;
            } else if (end != text.length()) {
                setSelection(text, text.length());
                return true;
            }
        }