From cfc2915d926cee14380b54d0960262e748eed4f5 Mon Sep 17 00:00:00 2001 From: Leon Scroggins Date: Wed, 2 Dec 2009 10:12:57 -0500 Subject: In setDefaultSelection ensure that webkit is notified of the new selection. Fix for http://b/issue?id=2254732 --- core/java/android/webkit/WebTextView.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'core/java') 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); + } } /** -- cgit v1.1