diff options
Diffstat (limited to 'core/java/android/widget/SpellChecker.java')
| -rw-r--r-- | core/java/android/widget/SpellChecker.java | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/core/java/android/widget/SpellChecker.java b/core/java/android/widget/SpellChecker.java index 9e7f97ea16eb..b204dfd0c032 100644 --- a/core/java/android/widget/SpellChecker.java +++ b/core/java/android/widget/SpellChecker.java @@ -753,4 +753,39 @@ public class SpellChecker implements SpellCheckerSessionListener { } } } + + public static boolean haveWordBoundariesChanged(final Editable editable, final int start, + final int end, final int spanStart, final int spanEnd) { + final boolean haveWordBoundariesChanged; + if (spanEnd != start && spanStart != end) { + haveWordBoundariesChanged = true; + if (DBG) { + Log.d(TAG, "(1) Text inside the span has been modified. Remove."); + } + } else if (spanEnd == start && start < editable.length()) { + final int codePoint = Character.codePointAt(editable, start); + haveWordBoundariesChanged = Character.isLetterOrDigit(codePoint); + if (DBG) { + Log.d(TAG, "(2) Characters have been appended to the spanned text. " + + (haveWordBoundariesChanged ? "Remove.<" : "Keep. <") + (char)(codePoint) + + ">, " + editable + ", " + editable.subSequence(spanStart, spanEnd) + ", " + + start); + } + } else if (spanStart == end && end > 0) { + final int codePoint = Character.codePointBefore(editable, end); + haveWordBoundariesChanged = Character.isLetterOrDigit(codePoint); + if (DBG) { + Log.d(TAG, "(3) Characters have been prepended to the spanned text. " + + (haveWordBoundariesChanged ? "Remove.<" : "Keep.<") + (char)(codePoint) + + ">, " + editable + ", " + editable.subSequence(spanStart, spanEnd) + ", " + + end); + } + } else { + if (DBG) { + Log.d(TAG, "(4) Characters adjacent to the spanned text were deleted. Keep."); + } + haveWordBoundariesChanged = false; + } + return haveWordBoundariesChanged; + } } |
