Index: views/widget/root_view.cc |
diff --git a/views/widget/root_view.cc b/views/widget/root_view.cc |
index 143b23ad99429c1d19b454c8fb86a5ba6b69c822..2ad45ea6c1e165ea1536fc030344c1e618020b05 100644 |
--- a/views/widget/root_view.cc |
+++ b/views/widget/root_view.cc |
@@ -287,7 +287,7 @@ void RootView::ViewHierarchyChanged(bool is_add, View* parent, View* child) { |
} |
#if defined(TOUCH_UI) |
- if (touch_pressed_handler_) { |
+ if (touch_pressed_handler_ == child) { |
touch_pressed_handler_ = NULL; |
} |
#endif |
@@ -347,6 +347,7 @@ bool RootView::OnTouchEvent(const TouchEvent& e) { |
// return true, which will cause subsequent drag/release events to get |
// forwarded to that view. |
if (handled) { |
+ touch_pressed_handler_->set_touch_event_observer(this); |
gesture_manager_->ProcessTouchEventForGesture(e, this, handled); |
return true; |
} |
@@ -359,7 +360,13 @@ bool RootView::OnTouchEvent(const TouchEvent& e) { |
gesture_manager_->ProcessTouchEventForGesture(e, this, handled); |
return handled; |
} |
-#endif |
+ |
+void RootView::OnTouchSequenceEnd() { |
+ DCHECK(touch_pressed_handler_); |
+ touch_pressed_handler_ = NULL; |
+} |
+ |
+#endif // defined(TOUCH_UI) |
bool RootView::OnMousePressed(const MouseEvent& e) { |
// This function does not normally handle non-client messages except for |