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

Commit a9b9907f authored by Andrei Stingaceanu's avatar Andrei Stingaceanu Committed by Android (Google) Code Review
Browse files

Merge "Fix insertion handle disappearing in extract mode" into mnc-dev

parents 77612940 cfa13a77
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -105,8 +105,8 @@ public class ExtractEditText extends EditText {
    @Override public boolean onTextContextMenuItem(int id) {
        if (mIME != null && mIME.onExtractTextContextMenuItem(id)) {
            // Mode was started on Extracted, needs to be stopped here.
            // Cut and paste will change the text, which stops selection mode.
            if (id == android.R.id.copy) stopTextActionMode();
            // Cut will change the text, which stops selection mode.
            if (id == android.R.id.copy || id == android.R.id.paste) stopTextActionMode();
            return true;
        }
        return super.onTextContextMenuItem(id);
+20 −9
Original line number Diff line number Diff line
@@ -6347,19 +6347,30 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
        if (text.text != null) {
            if (content == null) {
                setText(text.text, TextView.BufferType.EDITABLE);
            } else if (text.partialStartOffset < 0) {
                removeParcelableSpans(content, 0, content.length());
                content.replace(0, content.length(), text.text);
            } else {
                int start = 0;
                int end = content.length();

                if (text.partialStartOffset >= 0) {
                    final int N = content.length();
                int start = text.partialStartOffset;
                    start = text.partialStartOffset;
                    if (start > N) start = N;
                int end = text.partialEndOffset;
                    end = text.partialEndOffset;
                    if (end > N) end = N;
                }

                removeParcelableSpans(content, start, end);
                if (TextUtils.equals(content.subSequence(start, end), text.text)) {
                    if (text.text instanceof Spanned) {
                        // OK to copy spans only.
                        TextUtils.copySpansFrom((Spanned) text.text, start, end,
                                Object.class, content, start);
                    }
                } else {
                    content.replace(start, end, text.text);
                }
            }
        }

        // Now set the selection position...  make sure it is in range, to
        // avoid crashes.  If this is a partial update, it is possible that