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

Commit 91373209 authored by Victoria Lease's avatar Victoria Lease
Browse files

Avert crash when dragging text in same TextView

The previous implementation made liberal assumptions about the size
of the string being edited, as well as the position of the substring
being dragged. Explicitly checking those assumptions fixes our
IndexOutOfBoundsException.

Bug: 7129392
Change-Id: I32560cf87fbbe703a8b26c7eb2a64c8f8c0bfcf1
parent 37ee5342
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -1801,13 +1801,13 @@ public class Editor {
            mTextView.deleteText_internal(dragSourceStart, dragSourceEnd);

            // Make sure we do not leave two adjacent spaces.
            CharSequence t = mTextView.getTransformedText(dragSourceStart - 1, dragSourceStart + 1);
            if ( (dragSourceStart == 0 || Character.isSpaceChar(t.charAt(0))) &&
                    (dragSourceStart == mTextView.getText().length() ||
                    Character.isSpaceChar(t.charAt(1))) ) {
                final int pos = dragSourceStart == mTextView.getText().length() ?
                        dragSourceStart - 1 : dragSourceStart;
                mTextView.deleteText_internal(pos, pos + 1);
            final int prevCharIdx = Math.max(0,  dragSourceStart - 1);
            final int nextCharIdx = Math.min(mTextView.getText().length(), dragSourceStart + 1);
            if (nextCharIdx > prevCharIdx + 1) {
                CharSequence t = mTextView.getTransformedText(prevCharIdx, nextCharIdx);
                if (Character.isSpaceChar(t.charAt(0)) && Character.isSpaceChar(t.charAt(1))) {
                    mTextView.deleteText_internal(prevCharIdx, prevCharIdx + 1);
                }
            }
        }
    }