Index: ui/views/widget/widget.cc |
diff --git a/ui/views/widget/widget.cc b/ui/views/widget/widget.cc |
index 7f649c04025bffe95c5f1ab444279baf94f77572..a24f781df4d3ba81640a64d935d8547ca5bc183d 100644 |
--- a/ui/views/widget/widget.cc |
+++ b/ui/views/widget/widget.cc |
@@ -788,7 +788,14 @@ void Widget::RunShellDrag(View* view, |
ui::DragDropTypes::DragEventSource source) { |
dragged_view_ = view; |
OnDragWillStart(); |
+ |
+ WidgetDeletionObserver widget_deletion_observer(this); |
native_widget_->RunShellDrag(view, data, location, operation, source); |
+ |
+ // The widget may be destroyed during the drag operation. |
+ if (!widget_deletion_observer.IsWidgetAlive()) |
+ return; |
+ |
// If the view is removed during the drag operation, dragged_view_ is set to |
// NULL. |
if (view && dragged_view_ == view) { |