diff options
| author | Leon Scroggins <scroggo@google.com> | 2010-10-18 10:09:07 -0400 |
|---|---|---|
| committer | Leon Scroggins <scroggo@google.com> | 2010-10-18 10:09:07 -0400 |
| commit | e8aa954e46d002ae89fcfc307956312721b41b5f (patch) | |
| tree | 7706bf26d19340c873c80667789120d69e1fad54 /core/java/android/webkit/WebTextView.java | |
| parent | 7a1af97689b4b9d4c0e8a51a2d81158c72bc85c1 (diff) | |
| parent | 46ca6a2289e2de9d5a0638c962da0717c51520d3 (diff) | |
resolved conflicts for merge of 46ca6a22 to master
Change-Id: I8302fa2f5acf91fb3793e5978a5dc63ac8f3a457
Diffstat (limited to 'core/java/android/webkit/WebTextView.java')
| -rw-r--r-- | core/java/android/webkit/WebTextView.java | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/core/java/android/webkit/WebTextView.java b/core/java/android/webkit/WebTextView.java index 812e1261479b..3bcd483a4cc3 100644 --- a/core/java/android/webkit/WebTextView.java +++ b/core/java/android/webkit/WebTextView.java @@ -317,6 +317,22 @@ import java.util.ArrayList; return ptr == mNodePointer; } + /** + * Ensure that the underlying textfield is lined up with the WebTextView. + */ + private void lineUpScroll() { + Layout layout = getLayout(); + if (mWebView != null && layout != null) { + float maxScrollX = Touch.getMaxScrollX(this, layout, mScrollY); + if (DebugFlags.WEB_TEXT_VIEW) { + Log.v(LOGTAG, "onTouchEvent x=" + mScrollX + " y=" + + mScrollY + " maxX=" + maxScrollX); + } + mWebView.scrollFocusedTextInput(maxScrollX > 0 ? + mScrollX / maxScrollX : 0, mScrollY); + } + } + @Override public InputConnection onCreateInputConnection( EditorInfo outAttrs) { InputConnection connection = super.onCreateInputConnection(outAttrs); @@ -412,6 +428,12 @@ import java.util.ArrayList; } @Override + protected void onScrollChanged(int l, int t, int oldl, int oldt) { + super.onScrollChanged(l, t, oldl, oldt); + lineUpScroll(); + } + + @Override protected void onSelectionChanged(int selStart, int selEnd) { if (!mFromWebKit && !mFromFocusChange && !mFromSetInputType && mWebView != null && !mInSetTextAndKeepSelection) { @@ -420,6 +442,7 @@ import java.util.ArrayList; + " selEnd=" + selEnd); } mWebView.setSelection(selStart, selEnd); + lineUpScroll(); } } @@ -544,17 +567,7 @@ import java.util.ArrayList; // to big for the case of a small textfield. int smallerSlop = slop/2; if (dx > smallerSlop || dy > smallerSlop) { - Layout layout = getLayout(); - if (mWebView != null && layout != null) { - float maxScrollX = (float) Touch.getMaxScrollX(this, layout, - mScrollY); - if (DebugFlags.WEB_TEXT_VIEW) { - Log.v(LOGTAG, "onTouchEvent x=" + mScrollX + " y=" - + mScrollY + " maxX=" + maxScrollX); - } - mWebView.scrollFocusedTextInput(maxScrollX > 0 ? - mScrollX / maxScrollX : 0, mScrollY); - } + // Scrolling is handled in onScrollChanged. mScrolled = true; cancelLongPress(); return true; |
