diff options
| author | Leon Scroggins <scroggo@google.com> | 2011-01-19 12:49:57 -0500 |
|---|---|---|
| committer | Leon Scroggins <scroggo@google.com> | 2011-01-19 13:18:59 -0500 |
| commit | 3be1ffab08728ed0f36677e4499d70fbd591f999 (patch) | |
| tree | 28e410d25055a0b7fd9ec467df99c46446ca104c /core/java/android/webkit/WebTextView.java | |
| parent | 4061c9aa6d77bd7ad3b43d898b3e55fd62f57f18 (diff) | |
Only scroll on screen when necessary.
Bug:3367446
bringPointIntoView was called by TextView in onPreDraw. This was
passing a message to the webcore thread to change the scroll
position. This is unnecessary, because typically the scroll
position will be changed by webkit when keys are pressed. The
one situation where this helped was when the user taps on a
textfield, which brings up the IME, which may cover it. A better
solution is to tell webkit to scroll it on screen once the
screen size changes. I have a CL in external/webkit to do that:
https://android-git.corp.google.com/g/#change,91095
Change-Id: I6e06ad59e1a1c99365bb5be635a43d1b88658c0d
Diffstat (limited to 'core/java/android/webkit/WebTextView.java')
| -rw-r--r-- | core/java/android/webkit/WebTextView.java | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/core/java/android/webkit/WebTextView.java b/core/java/android/webkit/WebTextView.java index bd5ec7944473..72b0023a2432 100644 --- a/core/java/android/webkit/WebTextView.java +++ b/core/java/android/webkit/WebTextView.java @@ -135,6 +135,7 @@ import junit.framework.Assert; // Used to determine whether onFocusChanged was called as a result of // calling remove(). private boolean mInsideRemove; + private boolean mInPassword; // Types used with setType. Keep in sync with CachedInput.h private static final int NORMAL_TEXT_FIELD = 0; @@ -784,22 +785,11 @@ import junit.framework.Assert; mInsideRemove = false; } - /** - * Move the caret/selection into view. - */ - /* package */ void bringIntoView() { - bringPointIntoView(Selection.getSelectionEnd(getText())); - } - @Override public boolean bringPointIntoView(int offset) { - if (mWebView == null) return false; - if (mWebView.nativeFocusCandidateIsPassword()) { + if (mInPassword) { return getLayout() != null && super.bringPointIntoView(offset); } - // For non password text input, tell webkit to move the caret/selection - // on screen, since webkit draws them. - mWebView.revealSelection(); return true; } @@ -914,6 +904,7 @@ import junit.framework.Assert; * @param inPassword True if the textfield is a password field. */ /* package */ void setInPassword(boolean inPassword) { + mInPassword = inPassword; if (inPassword) { setInputType(EditorInfo.TYPE_CLASS_TEXT | EditorInfo. TYPE_TEXT_VARIATION_WEB_PASSWORD); |
