diff options
| author | George Mount <mount@google.com> | 2012-06-04 14:48:18 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-06-04 14:48:18 -0700 |
| commit | a419a06e53ad20fa4cd3ca592c46f5e5b4292ff9 (patch) | |
| tree | bc658ffb49972bf0250f749ad5c3b71ee41a2234 /core/java/android/webkit/WebViewClassic.java | |
| parent | 6787dd2747ac56d5ee411711176435bc8e0431d2 (diff) | |
| parent | f1c00f90216e0b574cf523946a0e26c8c5ef13d6 (diff) | |
Merge "Support selections within scrollable text areas."
Diffstat (limited to 'core/java/android/webkit/WebViewClassic.java')
| -rw-r--r-- | core/java/android/webkit/WebViewClassic.java | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/core/java/android/webkit/WebViewClassic.java b/core/java/android/webkit/WebViewClassic.java index 90bcf7bf0941..a67ea6d5e319 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); } } } |
