Index: ui/views/widget/root_view.cc |
diff --git a/ui/views/widget/root_view.cc b/ui/views/widget/root_view.cc |
index 1092f2dbd6b95e285e08be18136387146af17342..dfc9d8a3230e614efec588caa28a7687861babda 100644 |
--- a/ui/views/widget/root_view.cc |
+++ b/ui/views/widget/root_view.cc |
@@ -433,7 +433,12 @@ bool RootView::OnMousePressed(const ui::MouseEvent& event) { |
mouse_pressed_event.set_flags(event.flags() & ~ui::EF_IS_DOUBLE_CLICK); |
drag_info_.Reset(); |
- DispatchEventToTarget(mouse_pressed_handler_, &mouse_pressed_event); |
+ { |
+ WidgetDeletionObserver widget_deletion_observer(widget_); |
+ DispatchEventToTarget(mouse_pressed_handler_, &mouse_pressed_event); |
+ if (!widget_deletion_observer.IsWidgetAlive()) |
+ return mouse_pressed_event.handled(); |
+ } |
// The view could have removed itself from the tree when handling |
// OnMousePressed(). In this case, the removal notification will have |