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

Commit b7419dd7 authored by Clara Bayarri's avatar Clara Bayarri
Browse files

Editor: Account for a split cursor in the content rect calculation

In some cases, the cursor in a TextView is split. This happens with
RTL languages. For this case we need to ensure neither of the half
cursors is obscured by the Floating Toolbar, hence we take the
minimal rectangle that contains both cursors as the content rect.

Change-Id: I2ce411793fcba2140c4ad7fb7caaf03593620484
parent 7a11a0e8
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -3091,6 +3091,17 @@ public class Editor {
                        mTextView.getSelectionStart(), mTextView.getSelectionEnd(), mSelectionPath);
                mSelectionPath.computeBounds(mSelectionBounds, true);
                mSelectionBounds.bottom += mSelectionHandleHeight;
            } else if (mCursorCount == 2) {
                // We have a split cursor. In this case, we take the rectangle that includes both
                // parts of the cursor to ensure we don't obscure either of them.
                Rect firstCursorBounds = mCursorDrawable[0].getBounds();
                Rect secondCursorBounds = mCursorDrawable[1].getBounds();
                mSelectionBounds.set(
                        Math.min(firstCursorBounds.left, secondCursorBounds.left),
                        Math.min(firstCursorBounds.top, secondCursorBounds.top),
                        Math.max(firstCursorBounds.right, secondCursorBounds.right),
                        Math.max(firstCursorBounds.bottom, secondCursorBounds.bottom)
                            + mInsertionHandleHeight);
            } else {
                // We have a single cursor.
                int line = mTextView.getLayout().getLineForOffset(mTextView.getSelectionStart());