Index: ui/views/widget/root_view.cc |
diff --git a/ui/views/widget/root_view.cc b/ui/views/widget/root_view.cc |
index 1185c755153ad47dd10df9f4459358ea97792370..e52ed4d6c15891ede55c80448fe63930cd9183dd 100644 |
--- a/ui/views/widget/root_view.cc |
+++ b/ui/views/widget/root_view.cc |
@@ -278,10 +278,25 @@ void RootView::DispatchGestureEvent(ui::GestureEvent* event) { |
break; |
} |
+ // Terry: A runtime flag will specify whether or not fuzzing should be |
+ // used here (and will possibly also specify an overlap percentage). |
+ bool use_fuzzing = true; |
+ |
+ View* gesture_handler = NULL; |
+ if (use_fuzzing) { |
+ gfx::Rect touch_rect(event->details().bounding_box()); |
+ gfx::Point origin(touch_rect.origin()); |
+ View::ConvertPointFromScreen(this, &origin); |
+ touch_rect.set_origin(origin); |
+ gesture_handler = GetEventHandlerForRect(touch_rect); |
+ } else { |
+ gesture_handler = GetEventHandlerForPoint(event->location()); |
+ } |
+ |
// Walk up the tree until we find a view that wants the gesture event. |
- for (gesture_handler_ = GetEventHandlerForPoint(event->location()); |
- gesture_handler_ && (gesture_handler_ != this); |
- gesture_handler_ = gesture_handler_->parent()) { |
+ for (gesture_handler_ = gesture_handler; |
+ gesture_handler_ && (gesture_handler_ != this); |
+ gesture_handler_ = gesture_handler_->parent()) { |
if (!gesture_handler_->enabled()) { |
// Disabled views eat events but are treated as not handled. |
return; |