Index: views/widget/root_view.cc |
diff --git a/views/widget/root_view.cc b/views/widget/root_view.cc |
index fed3f015a52094da1e4368cac7fd588efc783c1a..aae04b7bec0d35f4f8a8a12b59f2fa36b63fd2b7 100644 |
--- a/views/widget/root_view.cc |
+++ b/views/widget/root_view.cc |
@@ -82,15 +82,6 @@ void RootView::NotifyNativeViewHierarchyChanged(bool attached, |
// Input ----------------------------------------------------------------------- |
-void RootView::ProcessMouseDragCanceled() { |
- if (mouse_pressed_handler_) { |
- // Synthesize a release event. |
- MouseEvent release_event(ui::ET_MOUSE_RELEASED, last_mouse_event_x_, |
- last_mouse_event_y_, last_mouse_event_flags_); |
- OnMouseReleased(release_event, true); |
- } |
-} |
- |
bool RootView::ProcessKeyEvent(const KeyEvent& event) { |
bool consumed = false; |
@@ -261,7 +252,7 @@ bool RootView::OnMouseDragged(const MouseEvent& event) { |
return false; |
} |
-void RootView::OnMouseReleased(const MouseEvent& event, bool canceled) { |
+void RootView::OnMouseReleased(const MouseEvent& event) { |
MouseEvent e(event, this); |
UpdateCursor(e); |
@@ -272,9 +263,23 @@ void RootView::OnMouseReleased(const MouseEvent& event, bool canceled) { |
// We allow the view to delete us from ProcessMouseReleased. As such, |
// configure state such that we're done first, then call View. |
View* mouse_pressed_handler = mouse_pressed_handler_; |
- mouse_pressed_handler_ = NULL; |
- explicit_mouse_handler_ = false; |
- mouse_pressed_handler->ProcessMouseReleased(mouse_released, canceled); |
+ SetMouseHandler(NULL); |
+ mouse_pressed_handler->ProcessMouseReleased(mouse_released); |
+ // WARNING: we may have been deleted. |
+ } |
+} |
+ |
+void RootView::OnMouseCaptureLost() { |
+ if (mouse_pressed_handler_) { |
+ // Synthesize a release event for UpdateCursor and OnMouseReleased. |
+ MouseEvent release_event(ui::ET_MOUSE_RELEASED, last_mouse_event_x_, |
+ last_mouse_event_y_, last_mouse_event_flags_); |
+ UpdateCursor(release_event); |
+ // We allow the view to delete us from OnMouseCaptureLost. As such, |
+ // configure state such that we're done first, then call View. |
+ View* mouse_pressed_handler = mouse_pressed_handler_; |
+ SetMouseHandler(NULL); |
+ mouse_pressed_handler->OnMouseCaptureLost(); |
// WARNING: we may have been deleted. |
} |
} |