From 517d9f3bbfcdcaebd32ca1146402b10d01d49a5c Mon Sep 17 00:00:00 2001 From: "Joshua A. Horton" Date: Fri, 3 May 2024 08:33:39 +0700 Subject: [PATCH] fix(android): fixes inverted selection-range handling --- .../src/main/java/com/keyman/engine/KMKeyboard.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/android/KMEA/app/src/main/java/com/keyman/engine/KMKeyboard.java b/android/KMEA/app/src/main/java/com/keyman/engine/KMKeyboard.java index 5e54e73f4a..430c3b81d3 100644 --- a/android/KMEA/app/src/main/java/com/keyman/engine/KMKeyboard.java +++ b/android/KMEA/app/src/main/java/com/keyman/engine/KMKeyboard.java @@ -204,13 +204,13 @@ final class KMKeyboard extends WebView { */ // Count the number of characters which are surrogate pairs. - int pairsAtStart = CharSequenceUtil.countSurrogatePairs(rawText.substring(0, selStart), rawText.length()); - String selectedText = rawText.substring(selStart, selEnd); + int pairsAtStart = CharSequenceUtil.countSurrogatePairs(rawText.substring(0, selMin), rawText.length()); + String selectedText = rawText.substring(selMin, selMax); int pairsSelected = CharSequenceUtil.countSurrogatePairs(selectedText, selectedText.length()); - selStart -= pairsAtStart; - selEnd -= (pairsAtStart + pairsSelected); - this.loadJavascript(KMString.format("updateKMSelectionRange(%d,%d)", selStart, selEnd)); + selMin -= pairsAtStart; + selMax -= (pairsAtStart + pairsSelected); + this.loadJavascript(KMString.format("updateKMSelectionRange(%d,%d)", selMin, selMax)); } result = true;