From 0df0269832a5a400d5c103457ade32b1f9734a3b Mon Sep 17 00:00:00 2001 From: Cary Clark Date: Wed, 24 Nov 2010 11:01:37 -0500 Subject: [PATCH] defer resume while selecting text Allow scrolling, dragging, zooming to process normally while selecting text, but prevent them from resuming the webkit update until the selection is done. Also, resume the webkit priority when resuming the updates. bug:3226364 Change-Id: Idfad6b63b6eb02208f977d89a8409377e9d731e7 --- core/java/android/webkit/WebView.java | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index a0ee7651e87c5..56325f6e12695 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -3053,7 +3053,9 @@ public class WebView extends AbsoluteLayout abortAnimation(); mPrivateHandler.removeMessages(RESUME_WEBCORE_PRIORITY); WebViewCore.resumePriority(); - WebViewCore.resumeUpdatePicture(mWebViewCore); + if (!mSelectingText) { + WebViewCore.resumeUpdatePicture(mWebViewCore); + } } } else { super.computeScroll(); @@ -3818,7 +3820,9 @@ public class WebView extends AbsoluteLayout } void onFixedLengthZoomAnimationEnd() { - WebViewCore.resumeUpdatePicture(mWebViewCore); + if (!mSelectingText) { + WebViewCore.resumeUpdatePicture(mWebViewCore); + } onZoomAnimationEnd(); } @@ -4647,6 +4651,7 @@ public class WebView extends AbsoluteLayout // called by mSelectCallback.onDestroyActionMode mSelectCallback.finish(); mSelectCallback = null; + WebViewCore.resumePriority(); WebViewCore.resumeUpdatePicture(mWebViewCore); invalidate(); // redraw without selection } @@ -5552,7 +5557,9 @@ public class WebView extends AbsoluteLayout // is possible on emulator. mLastVelocity = 0; WebViewCore.resumePriority(); - WebViewCore.resumeUpdatePicture(mWebViewCore); + if (!mSelectingText) { + WebViewCore.resumeUpdatePicture(mWebViewCore); + } break; } stopTouch(); @@ -5681,8 +5688,8 @@ public class WebView extends AbsoluteLayout mVelocityTracker = null; } - if (mTouchMode == TOUCH_DRAG_MODE || - mTouchMode == TOUCH_DRAG_LAYER_MODE) { + if ((mTouchMode == TOUCH_DRAG_MODE + || mTouchMode == TOUCH_DRAG_LAYER_MODE) && !mSelectingText) { WebViewCore.resumePriority(); WebViewCore.resumeUpdatePicture(mWebViewCore); } @@ -6053,7 +6060,9 @@ public class WebView extends AbsoluteLayout } if ((maxX == 0 && vy == 0) || (maxY == 0 && vx == 0)) { WebViewCore.resumePriority(); - WebViewCore.resumeUpdatePicture(mWebViewCore); + if (!mSelectingText) { + WebViewCore.resumeUpdatePicture(mWebViewCore); + } if (mScroller.springBack(mScrollX, mScrollY, 0, computeMaxScrollX(), 0, computeMaxScrollY())) { invalidate();