Index: ui/aura/root_window.cc |
diff --git a/ui/aura/root_window.cc b/ui/aura/root_window.cc |
index aeb3651bd788d7937dfccff504cd475a57a3de6f..aebeb51c0695930a763fd1bb6b2ed2f110ad13c1 100644 |
--- a/ui/aura/root_window.cc |
+++ b/ui/aura/root_window.cc |
@@ -311,6 +311,7 @@ bool RootWindow::DispatchTouchEvent(TouchEvent* event) { |
// root window. |
target = this; |
} else { |
+ // We only come here when the first contact was within the root window. |
if (!target) |
target = GetEventHandlerForPoint(event->location()); |
if (!target) |
@@ -659,7 +660,10 @@ ui::TouchStatus RootWindow::ProcessTouchEvent(Window* target, |
return ui::TOUCH_STATUS_UNKNOWN; |
EventFilters filters; |
- GetEventFiltersToNotify(target->parent(), &filters); |
+ if (target == this) |
+ GetEventFiltersToNotify(target, &filters); |
+ else |
+ GetEventFiltersToNotify(target->parent(), &filters); |
for (EventFilters::const_reverse_iterator it = filters.rbegin(), |
rend = filters.rend(); |
it != rend; ++it) { |
@@ -668,7 +672,10 @@ ui::TouchStatus RootWindow::ProcessTouchEvent(Window* target, |
return status; |
} |
- return target->delegate()->OnTouchEvent(event); |
+ if (target->delegate()) |
+ return target->delegate()->OnTouchEvent(event); |
+ |
+ return ui::TOUCH_STATUS_UNKNOWN; |
} |
ui::GestureStatus RootWindow::ProcessGestureEvent(Window* target, |