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

Commit db9629ee authored by Mady Mellor's avatar Mady Mellor Committed by Android (Google) Code Review
Browse files

Merge "Fix: Hard to modify multi-line selection." into mnc-dev

parents 52dfc9d4 50a927cd
Loading
Loading
Loading
Loading
+14 −10
Original line number Diff line number Diff line
@@ -3974,16 +3974,16 @@ public class Editor {
                    }
                }
                mTouchWordOffset = Math.max(trueOffset - offset, 0);
                mInWord = !getWordIteratorWithText().isBoundary(offset);
                positionCursor = true;
            } else if (offset - mTouchWordOffset > mPreviousOffset) {
            } else if (offset - mTouchWordOffset > mPreviousOffset || currLine > mPrevLine) {
                // User is shrinking the selection.
                if (currLine > mPrevLine) {
                    // We're on a different line, so we'll snap to word boundaries.
                    offset = end;
                }
                    offset = start;
                    mTouchWordOffset = Math.max(trueOffset - offset, 0);
                } else {
                    offset -= mTouchWordOffset;
                mInWord = !getWordIteratorWithText().isBoundary(offset);
                }
                positionCursor = true;
            }

@@ -3999,7 +3999,9 @@ public class Editor {
                    } else {
                        offset = alteredOffset;
                    }
                    mTouchWordOffset = 0;
                }
                mInWord = !getWordIteratorWithText().isBoundary(offset);
                positionAtCursorOffset(offset, false);
            }
        }
@@ -4072,17 +4074,17 @@ public class Editor {
                    }
                }
                mTouchWordOffset = Math.max(offset - trueOffset, 0);
                mInWord = !getWordIteratorWithText().isBoundary(offset);
                positionCursor = true;
            } else if (offset + mTouchWordOffset < mPreviousOffset) {
            } else if (offset + mTouchWordOffset < mPreviousOffset || currLine < mPrevLine) {
                // User is shrinking the selection.
                if (currLine < mPrevLine) {
                    // We're on a different line, so we'll snap to word boundaries.
                    offset = start;
                }
                    offset = end;
                    mTouchWordOffset = Math.max(offset - trueOffset, 0);
                } else {
                    offset += mTouchWordOffset;
                }
                positionCursor = true;
                mInWord = !getWordIteratorWithText().isBoundary(offset);
            }

            if (positionCursor) {
@@ -4097,7 +4099,9 @@ public class Editor {
                    } else {
                        offset = Math.min(alteredOffset, length);
                    }
                    mTouchWordOffset = 0;
                }
                mInWord = !getWordIteratorWithText().isBoundary(offset);
                positionAtCursorOffset(offset, false);
            }
        }