Bug 617552: keep mEditable around and updating it selectively to fix a handful of input bugs, r=blassey, a=blocking-fennec=2.0b4 by dougt

This commit is contained in:
Brian Crowder 2011-01-06 17:15:24 -08:00
parent fdb9cba150
commit ddb2ac8192
2 changed files with 11 additions and 3 deletions

View File

@ -488,7 +488,7 @@ public class GeckoInputConnection
//Log.d("GeckoAppJava", "IME: notifyTextChange");
if (!text.contentEquals(GeckoApp.surfaceView.mEditable))
GeckoApp.surfaceView.setupEditable(text);
GeckoApp.surfaceView.setEditable(text);
if (mUpdateRequest == null)
return;

View File

@ -87,7 +87,7 @@ class GeckoSurfaceView
mSurfaceLock = new ReentrantLock();
mEditableFactory = Editable.Factory.getInstance();
setupEditable("");
initEditable("");
mIMEState = IME_STATE_DISABLED;
mIMETypeHint = "";
mIMEActionHint = "";
@ -375,7 +375,15 @@ class GeckoSurfaceView
return inputConnection;
}
public void setupEditable(String contents)
public void setEditable(String contents)
{
mEditable.removeSpan(inputConnection);
mEditable.replace(0, mEditable.length(), contents);
mEditable.setSpan(inputConnection, 0, contents.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
Selection.setSelection(mEditable, contents.length());
}
public void initEditable(String contents)
{
mEditable = mEditableFactory.newEditable(contents);
mEditable.setSpan(inputConnection, 0, contents.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);