diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/webkit/WebTextView.java | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/core/java/android/webkit/WebTextView.java b/core/java/android/webkit/WebTextView.java index 412e0d9..f04b04f 100644 --- a/core/java/android/webkit/WebTextView.java +++ b/core/java/android/webkit/WebTextView.java @@ -644,7 +644,22 @@ import java.util.ArrayList; /* package */ void setDefaultSelection() { Spannable text = (Spannable) getText(); int selection = mSingle ? text.length() : 0; - Selection. setSelection(text, selection, selection); + if (Selection.getSelectionStart(text) == selection + && Selection.getSelectionEnd(text) == selection) { + // The selection of the UI copy is set correctly, but the + // WebTextView still needs to inform the webkit thread to set the + // selection. Normally that is done in onSelectionChanged, but + // onSelectionChanged will not be called because the UI copy is not + // changing. (This can happen when the WebTextView takes focus. + // That onSelectionChanged was blocked because the selection set + // when focusing is not necessarily the desirable selection for + // WebTextView.) + if (mWebView != null) { + mWebView.setSelection(selection, selection); + } + } else { + Selection.setSelection(text, selection, selection); + } } /** |