diff options
| author | George Mount <mount@google.com> | 2012-05-21 13:00:14 -0700 |
|---|---|---|
| committer | George Mount <mount@google.com> | 2012-05-22 09:46:13 -0700 |
| commit | 12221d154023032d41d38dff5ee899aa485c43dd (patch) | |
| tree | 6698c457487485f4da95514aba5053cebc6a79db /core/java | |
| parent | b999b22eca779b283ceb2132371d2d3ecc88514e (diff) | |
DO NOT MERGE Consider current scroll position to move text field into view.
Bug 6530008
Change-Id: I6542dab70b64f809ec5dd4deb3511f8aa38278e1
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/webkit/WebViewClassic.java | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/core/java/android/webkit/WebViewClassic.java b/core/java/android/webkit/WebViewClassic.java index ab8bc64cd6c6..b4a312d750ea 100644 --- a/core/java/android/webkit/WebViewClassic.java +++ b/core/java/android/webkit/WebViewClassic.java @@ -5504,8 +5504,8 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc if (visibleRect.contains(mEditTextContentBounds)) { return; // no need to scroll } - nativeFindMaxVisibleRect(mNativeClass, mEditTextLayerId, visibleRect); syncSelectionCursors(); + nativeFindMaxVisibleRect(mNativeClass, mEditTextLayerId, visibleRect); final int buffer = Math.max(1, viewToContentDimension(EDIT_RECT_BUFFER)); Rect showRect = new Rect( Math.max(0, mEditTextContentBounds.left - buffer), @@ -5538,17 +5538,19 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc return; // no need to scroll } - int scrollX = visibleRect.left; + int scrollX = viewToContentX(getScrollX()); if (visibleRect.left > showRect.left) { - scrollX = showRect.left; + // We are scrolled too far + scrollX += showRect.left - visibleRect.left; } else if (visibleRect.right < showRect.right) { - scrollX = Math.max(0, showRect.right - visibleRect.width()); + // We aren't scrolled enough to include the right + scrollX += showRect.right - visibleRect.right; } - int scrollY = visibleRect.top; + int scrollY = viewToContentY(getScrollY()); if (visibleRect.top > showRect.top) { - scrollY = showRect.top; + scrollY += showRect.top - visibleRect.top; } else if (visibleRect.bottom < showRect.bottom) { - scrollY = Math.max(0, showRect.bottom - visibleRect.height()); + scrollY += showRect.bottom - visibleRect.bottom; } contentScrollTo(scrollX, scrollY, false); |
