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

Unified Diff: ui/aura/window_event_dispatcher.cc

Issue 393953012: Eager Gesture Recognition on Aura (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix tests. Created 6 years, 5 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: ui/aura/window_event_dispatcher.cc
diff --git a/ui/aura/window_event_dispatcher.cc b/ui/aura/window_event_dispatcher.cc
index 2e42a9559614609352bad7f2b3e80ff9ba60bdd0..b248d6bd2b6b5c6f15e0933c1b3e0b5d6e4d0b6b 100644
--- a/ui/aura/window_event_dispatcher.cc
+++ b/ui/aura/window_event_dispatcher.cc
@@ -24,6 +24,7 @@
#include "ui/events/event.h"
#include "ui/events/gestures/gesture_recognizer.h"
#include "ui/events/gestures/gesture_types.h"
+#include "ui/events/gestures/unified_gesture_detector_enabled.h"
typedef ui::EventDispatchDetails DispatchDetails;
@@ -161,13 +162,28 @@ void WindowEventDispatcher::ProcessedTouchEvent(ui::TouchEvent* event,
Window* window,
ui::EventResult result) {
scoped_ptr<ui::GestureRecognizer::Gestures> gestures;
- gestures.reset(ui::GestureRecognizer::Get()->
- ProcessTouchEventForGesture(*event, result, window));
+
+ if (!ui::IsUnifiedGestureDetectorEnabled()) {
+ gestures.reset(ui::GestureRecognizer::Get()->ProcessTouchEventForGesture(
+ *event, result, window));
+ } else {
+ gestures.reset(
+ ui::GestureRecognizer::Get()->AckTouchEventForGesture(result, window));
+ }
+
DispatchDetails details = ProcessGestures(gestures.get());
if (details.dispatcher_destroyed)
return;
}
+void WindowEventDispatcher::OnForwardingTouchEvent(ui::TouchEvent* event,
+ Window* window) {
+ if (ui::IsUnifiedGestureDetectorEnabled()) {
+ ui::GestureRecognizer::Get()->ProcessTouchEventForGesture(
+ *event, event->result(), window);
+ }
+}
+
void WindowEventDispatcher::HoldPointerMoves() {
if (!move_hold_count_)
held_event_factory_.InvalidateWeakPtrs();
@@ -487,11 +503,18 @@ ui::EventDispatchDetails WindowEventDispatcher::PostDispatchEvent(
!held_move_event_->IsTouchEvent()) {
ui::TouchEvent orig_event(static_cast<const ui::TouchEvent&>(event),
static_cast<Window*>(event.target()), window());
- // Get the list of GestureEvents from GestureRecognizer.
+ // If the event isn't being handled asynchronously, handle it now.
scoped_ptr<ui::GestureRecognizer::Gestures> gestures;
gestures.reset(ui::GestureRecognizer::Get()->
ProcessTouchEventForGesture(orig_event, event.result(),
static_cast<Window*>(target)));
+
+ if (ui::IsUnifiedGestureDetectorEnabled()) {
+ if (!(event.result() & ui::ER_CONSUMED)) {
+ gestures.reset(ui::GestureRecognizer::Get()->AckTouchEventForGesture(
+ event.result(), static_cast<Window*>(target)));
+ }
+ }
sadrul 2014/07/16 21:07:49 Should this be something like: if (unified && !c
tdresser 2014/07/28 18:22:09 This issue has been addressed in the most recent p
return ProcessGestures(gestures.get());
}
}

Powered by Google App Engine
This is Rietveld 408576698