summaryrefslogtreecommitdiff
path: root/core/java/android/webkit/WebViewClassic.java
diff options
context:
space:
mode:
authorGeorge Mount <mount@google.com>2012-06-04 12:26:27 -0700
committerGeorge Mount <mount@google.com>2012-06-04 12:26:27 -0700
commitf1c00f90216e0b574cf523946a0e26c8c5ef13d6 (patch)
tree698d0ff70a093dcad167bb2bbef48c3a15f164f0 /core/java/android/webkit/WebViewClassic.java
parentb49f2bb5dd82b692ea3272df01cb79e79e70605f (diff)
Support selections within scrollable text areas.
Bug 6557816 Change text selection to modify only the base or extent, not both points of the selection. Webkit Change: I9a08633160eeb14d5c45246c6128aa02c1642e8d Change-Id: I355b21e9062b5d364cfb278fda239a4ecdff16d1
Diffstat (limited to 'core/java/android/webkit/WebViewClassic.java')
-rw-r--r--core/java/android/webkit/WebViewClassic.java31
1 files changed, 16 insertions, 15 deletions
diff --git a/core/java/android/webkit/WebViewClassic.java b/core/java/android/webkit/WebViewClassic.java
index 5a183b1d2936..1abe648d7656 100644
--- a/core/java/android/webkit/WebViewClassic.java
+++ b/core/java/android/webkit/WebViewClassic.java
@@ -5159,18 +5159,11 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
}
private void updateWebkitSelection() {
- int[] handles = null;
- if (mIsCaretSelection) {
- mSelectCursorExtent.set(mSelectCursorBase.x, mSelectCursorBase.y);
- }
- if (mSelectingText) {
- handles = new int[4];
- getSelectionHandles(handles);
- } else {
- nativeSetTextSelection(mNativeClass, 0);
- }
+ int handleId = (mSelectDraggingCursor == mSelectCursorBase)
+ ? HANDLE_ID_BASE : HANDLE_ID_EXTENT;
mWebViewCore.removeMessages(EventHub.SELECT_TEXT);
- mWebViewCore.sendMessageAtFrontOfQueue(EventHub.SELECT_TEXT, handles);
+ mWebViewCore.sendMessageAtFrontOfQueue(EventHub.SELECT_TEXT,
+ mSelectDraggingCursor.x, mSelectDraggingCursor.y, (Integer)handleId);
}
private void resetCaretTimer() {
@@ -6104,6 +6097,10 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
}
}
+ private static int getSelectionCoordinate(int coordinate, int min, int max) {
+ return Math.max(Math.min(coordinate, max), min);
+ }
+
private void beginScrollEdit() {
if (mLastEditScroll == 0) {
mLastEditScroll = SystemClock.uptimeMillis() -
@@ -6157,11 +6154,15 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
scrollY = Math.min(getMaxTextScrollY(), scrollY);
scrollY = Math.max(0, scrollY);
scrollEditText(scrollX, scrollY);
- int cursorX = mSelectDraggingCursor.x;
- int cursorY = mSelectDraggingCursor.y;
- mSelectDraggingCursor.set(x - deltaX, y - deltaY);
+ int selectionX = getSelectionCoordinate(x,
+ mEditTextContentBounds.left, mEditTextContentBounds.right);
+ int selectionY = getSelectionCoordinate(y,
+ mEditTextContentBounds.top, mEditTextContentBounds.bottom);
+ int oldX = mSelectDraggingCursor.x;
+ int oldY = mSelectDraggingCursor.y;
+ mSelectDraggingCursor.set(selectionX, selectionY);
updateWebkitSelection();
- mSelectDraggingCursor.set(cursorX, cursorY);
+ mSelectDraggingCursor.set(oldX, oldY);
}
}
}