Index: chrome/browser/ui/views/simple_message_box_views.cc |
diff --git a/chrome/browser/ui/views/simple_message_box_views.cc b/chrome/browser/ui/views/simple_message_box_views.cc |
index 20f6c6c421c4b3e8f88b09131cae704c32c13bed..763634179e4ce0f47390a002fbee27177f6def8e 100644 |
--- a/chrome/browser/ui/views/simple_message_box_views.cc |
+++ b/chrome/browser/ui/views/simple_message_box_views.cc |
@@ -34,7 +34,6 @@ class SimpleMessageBoxViews : public views::DialogDelegate, |
MessageBoxResult result() const { return result_; } |
- private: |
virtual ~SimpleMessageBoxViews(); |
// Overridden from views::DialogDelegate: |
@@ -54,6 +53,7 @@ class SimpleMessageBoxViews : public views::DialogDelegate, |
// Overridden from MessageLoop::Dispatcher: |
virtual bool Dispatch(const base::NativeEvent& event) OVERRIDE; |
+ private: |
const string16 window_title_; |
const MessageBoxType type_; |
MessageBoxResult result_; |
@@ -160,15 +160,19 @@ MessageBoxResult ShowMessageBox(gfx::NativeWindow parent, |
views::Widget::CreateWindowWithParent(dialog, parent)->Show(); |
#if defined(USE_AURA) |
- aura::client::GetDispatcherClient(parent->GetRootWindow())->RunWithDispatcher( |
- dialog, parent, true); |
+ // Use the widget's window itself so that the message loop |
+ // exists when the dialog is closed by some other means than |
+ // |Cancel| or |Accept|. |
+ aura::Window* anchor = parent ? |
+ parent : dialog->GetWidget()->GetNativeWindow(); |
+ aura::client::GetDispatcherClient(anchor->GetRootWindow())-> |
+ RunWithDispatcher(dialog, anchor, true); |
#else |
{ |
MessageLoop::ScopedNestableTaskAllower allow(MessageLoopForUI::current()); |
MessageLoopForUI::current()->RunWithDispatcher(dialog); |
} |
#endif |
- |
return dialog->result(); |
} |