summaryrefslogtreecommitdiff
path: root/core/java/android/webkit/WebTextView.java
diff options
context:
space:
mode:
authorLeon Scroggins <scroggo@google.com>2010-10-18 10:09:07 -0400
committerLeon Scroggins <scroggo@google.com>2010-10-18 10:09:07 -0400
commite8aa954e46d002ae89fcfc307956312721b41b5f (patch)
tree7706bf26d19340c873c80667789120d69e1fad54 /core/java/android/webkit/WebTextView.java
parent7a1af97689b4b9d4c0e8a51a2d81158c72bc85c1 (diff)
parent46ca6a2289e2de9d5a0638c962da0717c51520d3 (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.java35
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;