Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(114)

Unified Diff: content/common/input/web_input_event_traits.cc

Issue 200623003: Adopt "QuickScale" double-tap drag zoom code in the GestureProvider (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Yeah... Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/common/input/web_input_event_traits.cc
diff --git a/content/common/input/web_input_event_traits.cc b/content/common/input/web_input_event_traits.cc
index fb34d9e282f3eb1627114af112ab9749e15a4e07..7de816a1a6bc9645e7232f8fdbd8cc6a7d709019 100644
--- a/content/common/input/web_input_event_traits.cc
+++ b/content/common/input/web_input_event_traits.cc
@@ -145,17 +145,35 @@ void Coalesce(const WebTouchEvent& event_to_coalesce, WebTouchEvent* event) {
bool CanCoalesce(const WebGestureEvent& event_to_coalesce,
const WebGestureEvent& event) {
- return event.type == event_to_coalesce.type &&
- event.type == WebInputEvent::GestureScrollUpdate &&
- event.sourceDevice == event_to_coalesce.sourceDevice &&
- event.modifiers == event_to_coalesce.modifiers;
+ if (event.type != event_to_coalesce.type ||
+ event.sourceDevice != event_to_coalesce.sourceDevice ||
+ event.modifiers != event_to_coalesce.modifiers)
+ return false;
+
+ if (event.type == WebInputEvent::GestureScrollUpdate)
+ return true;
+
+ // GesturePinchUpdate scales can be combined only if they share a focal point,
+ // e.g., with double-tap drag zoom.
+ if (event.type == WebInputEvent::GesturePinchUpdate &&
+ event.x == event_to_coalesce.x &&
+ event.y == event_to_coalesce.y)
+ return true;
+
+ return false;
}
void Coalesce(const WebGestureEvent& event_to_coalesce,
WebGestureEvent* event) {
DCHECK(CanCoalesce(event_to_coalesce, *event));
- event->data.scrollUpdate.deltaX += event_to_coalesce.data.scrollUpdate.deltaX;
- event->data.scrollUpdate.deltaY += event_to_coalesce.data.scrollUpdate.deltaY;
+ if (event->type == WebInputEvent::GestureScrollUpdate) {
+ event->data.scrollUpdate.deltaX +=
+ event_to_coalesce.data.scrollUpdate.deltaX;
+ event->data.scrollUpdate.deltaY +=
+ event_to_coalesce.data.scrollUpdate.deltaY;
+ } else if (event->type == WebInputEvent::GesturePinchUpdate) {
+ event->data.pinchUpdate.scale *= event_to_coalesce.data.pinchUpdate.scale;
+ }
}
struct WebInputEventSize {
« no previous file with comments | « content/browser/renderer_host/input/gesture_event_queue.cc ('k') | content/common/input/web_input_event_traits_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698