summaryrefslogtreecommitdiffstats
path: root/core/java/android/webkit/WebTextView.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android/webkit/WebTextView.java')
-rw-r--r--core/java/android/webkit/WebTextView.java17
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);
+ }
}
/**