summaryrefslogtreecommitdiffstats
path: root/core/java/android/webkit/WebViewInputDispatcher.java
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2012-05-17 16:44:14 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-05-17 16:44:14 -0700
commit3d6f7eadb27d37f3c1e2a9505526c5f4a6cf990e (patch)
tree51a4593b374633f91c12bed2859eed524405d3c4 /core/java/android/webkit/WebViewInputDispatcher.java
parentae9d040f715130389de3dbc3bf52e24e5f29425a (diff)
parenteb11f47353102deb13c73b9c1106ed34761cd784 (diff)
downloadframeworks_base-3d6f7eadb27d37f3c1e2a9505526c5f4a6cf990e.zip
frameworks_base-3d6f7eadb27d37f3c1e2a9505526c5f4a6cf990e.tar.gz
frameworks_base-3d6f7eadb27d37f3c1e2a9505526c5f4a6cf990e.tar.bz2
Merge "Tweak show/hide of touch highlight" into jb-dev
Diffstat (limited to 'core/java/android/webkit/WebViewInputDispatcher.java')
-rw-r--r--core/java/android/webkit/WebViewInputDispatcher.java18
1 files changed, 16 insertions, 2 deletions
diff --git a/core/java/android/webkit/WebViewInputDispatcher.java b/core/java/android/webkit/WebViewInputDispatcher.java
index c5a86d8..d118eac 100644
--- a/core/java/android/webkit/WebViewInputDispatcher.java
+++ b/core/java/android/webkit/WebViewInputDispatcher.java
@@ -399,7 +399,6 @@ final class WebViewInputDispatcher {
unscheduleHideTapHighlightLocked();
unscheduleShowTapHighlightLocked();
mUiCallbacks.showTapHighlight(true);
- scheduleHideTapHighlightLocked();
}
private void scheduleShowTapHighlightLocked() {
@@ -466,13 +465,13 @@ final class WebViewInputDispatcher {
return;
}
mPostClickScheduled = false;
- showTapCandidateLocked();
MotionEvent event = mPostTouchStream.getLastEvent();
if (event == null || event.getAction() != MotionEvent.ACTION_UP) {
return;
}
+ showTapCandidateLocked();
MotionEvent eventToEnqueue = MotionEvent.obtainNoHistory(event);
DispatchEvent d = obtainDispatchEventLocked(eventToEnqueue, EVENT_TYPE_CLICK, 0,
mPostLastWebKitXOffset, mPostLastWebKitYOffset, mPostLastWebKitScale);
@@ -511,6 +510,7 @@ final class WebViewInputDispatcher {
}
private void enqueueHitTestLocked(MotionEvent event) {
+ mUiCallbacks.clearPreviousHitTest();
MotionEvent eventToEnqueue = MotionEvent.obtainNoHistory(event);
DispatchEvent d = obtainDispatchEventLocked(eventToEnqueue, EVENT_TYPE_HIT_TEST, 0,
mPostLastWebKitXOffset, mPostLastWebKitYOffset, mPostLastWebKitScale);
@@ -666,6 +666,10 @@ final class WebViewInputDispatcher {
if (event != null && recycleEvent) {
event.recycle();
}
+
+ if (eventType == EVENT_TYPE_CLICK) {
+ scheduleHideTapHighlightLocked();
+ }
}
}
}
@@ -802,6 +806,10 @@ final class WebViewInputDispatcher {
d.mEvent = null; // retain ownership of event, don't recycle it yet
}
recycleDispatchEventLocked(d);
+
+ if (eventType == EVENT_TYPE_CLICK) {
+ scheduleHideTapHighlightLocked();
+ }
}
// Handle the event.
@@ -1050,6 +1058,12 @@ final class WebViewInputDispatcher {
* @param show True if it should show the highlight, false if it should hide it
*/
public void showTapHighlight(boolean show);
+
+ /**
+ * Called when we are sending a new EVENT_TYPE_HIT_TEST to WebKit, so
+ * previous hit tests should be cleared as they are obsolete.
+ */
+ public void clearPreviousHitTest();
}
/* Implemented by {@link WebViewCore} to perform operations on the web kit thread. */