From a67a3cfc7c5db3b0a7710a75b57cd5360fce015a Mon Sep 17 00:00:00 2001 From: satok Date: Wed, 7 Sep 2011 17:14:03 +0900 Subject: [PATCH] Send onViewClicked in the extract mode Bug: 5257838 Change-Id: I16547aab86812f2db45deb879ad887dc38968164 --- .../inputmethodservice/ExtractEditText.java | 14 ++++++++++++++ core/java/android/widget/TextView.java | 15 +++++++++++---- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/core/java/android/inputmethodservice/ExtractEditText.java b/core/java/android/inputmethodservice/ExtractEditText.java index 44e7e52aec701..4fc63ed2d9172 100644 --- a/core/java/android/inputmethodservice/ExtractEditText.java +++ b/core/java/android/inputmethodservice/ExtractEditText.java @@ -19,6 +19,7 @@ package android.inputmethodservice; import android.content.Context; import android.util.AttributeSet; import android.view.inputmethod.ExtractedText; +import android.view.inputmethod.InputMethodManager; import android.widget.EditText; /*** @@ -142,4 +143,17 @@ public class ExtractEditText extends EditText { @Override public boolean hasFocus() { return this.isEnabled(); } + + /** + * @hide + */ + @Override protected void viewClicked(InputMethodManager imm) { + // As an instance of this class is supposed to be owned by IMS, + // and it has a reference to the IMS (the current IME), + // we just need to call back its onViewClicked() here. + // It should be good to avoid unnecessary IPCs by doing this as well. + if (mIME != null) { + mIME.onViewClicked(false); + } + } } diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 7f410aa9addaf..cb7037bfd3f73 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -5432,8 +5432,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (mMovement != null && mText instanceof Editable && mLayout != null && onCheckIsTextEditor()) { InputMethodManager imm = InputMethodManager.peekInstance(); + viewClicked(imm); if (imm != null) { - imm.viewClicked(this); imm.showSoftInput(this, 0); } } @@ -8346,9 +8346,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (touchIsFinished && (isTextEditable() || mTextIsSelectable)) { // Show the IME, except when selecting in read-only text. final InputMethodManager imm = InputMethodManager.peekInstance(); - if (imm != null) { - imm.viewClicked(this); - } + viewClicked(imm); if (!mTextIsSelectable) { handled |= imm != null && imm.showSoftInput(this, 0); } @@ -11308,6 +11306,15 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener mResolvedDrawables = false; } + /** + * @hide + */ + protected void viewClicked(InputMethodManager imm) { + if (imm != null) { + imm.viewClicked(this); + } + } + @ViewDebug.ExportedProperty(category = "text") private CharSequence mText; private CharSequence mTransformed;