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

Commit 9c396a24 authored by Jean Chalard's avatar Jean Chalard Committed by Android Git Automerger
Browse files

am 4bc74d19: Merge "Delete surrogate together."

* commit '4bc74d19':
  Delete surrogate together.
parents 324d4d72 4bc74d19
Loading
Loading
Loading
Loading
+9 −15
Original line number Diff line number Diff line
@@ -1920,6 +1920,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
                    // This should never happen.
                    Log.e(TAG, "Backspace when we don't know the selection position");
                }
                final int lengthToDelete = Character.isSupplementaryCodePoint(
                        mConnection.getCodePointBeforeCursor()) ? 2 : 1;
                if (mAppWorkAroundsUtils.isBeforeJellyBean()) {
                    // Backward compatibility mode. Before Jelly bean, the keyboard would simulate
                    // a hardware keyboard event on pressing enter or delete. This is bad for many
@@ -1927,15 +1929,18 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
                    // relying on this behavior so we continue to support it for older apps.
                    sendDownUpKeyEventForBackwardCompatibility(KeyEvent.KEYCODE_DEL);
                } else {
                    mConnection.deleteSurroundingText(1, 0);
                    mConnection.deleteSurroundingText(lengthToDelete, 0);
                }
                if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
                    ResearchLogger.latinIME_handleBackspace(1, true /* shouldUncommitLogUnit */);
                    ResearchLogger.latinIME_handleBackspace(lengthToDelete,
                            true /* shouldUncommitLogUnit */);
                }
                if (mDeleteCount > DELETE_ACCELERATE_AT) {
                    mConnection.deleteSurroundingText(1, 0);
                    final int lengthToDeleteAgain = Character.isSupplementaryCodePoint(
                            mConnection.getCodePointBeforeCursor()) ? 2 : 1;
                    mConnection.deleteSurroundingText(lengthToDeleteAgain, 0);
                    if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
                        ResearchLogger.latinIME_handleBackspace(1,
                        ResearchLogger.latinIME_handleBackspace(lengthToDeleteAgain,
                                true /* shouldUncommitLogUnit */);
                    }
                }
@@ -2730,17 +2735,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
                break;
            }
        }

        if (Constants.CODE_DELETE == primaryCode) {
            // This is a stopgap solution to avoid leaving a high surrogate alone in a text view.
            // In the future, we need to deprecate deteleSurroundingText() and have a surrogate
            // pair-friendly way of deleting characters in InputConnection.
            // TODO: use getCodePointBeforeCursor instead to improve performance
            final CharSequence lastChar = mConnection.getTextBeforeCursor(1, 0);
            if (!TextUtils.isEmpty(lastChar) && Character.isHighSurrogate(lastChar.charAt(0))) {
                mConnection.deleteSurroundingText(1, 0);
            }
        }
    }

    // Hooks for hardware keyboard