Index: chrome/browser/ui/gtk/tab_modal_confirm_dialog_gtk.cc |
diff --git a/chrome/browser/ui/gtk/tab_modal_confirm_dialog_gtk.cc b/chrome/browser/ui/gtk/tab_modal_confirm_dialog_gtk.cc |
index 9b98a307a870839ed86a7c9983a9b2a8cde59416..48c26dbefe3267d819910f4f2c702af9e1c2e6f2 100644 |
--- a/chrome/browser/ui/gtk/tab_modal_confirm_dialog_gtk.cc |
+++ b/chrome/browser/ui/gtk/tab_modal_confirm_dialog_gtk.cc |
@@ -32,7 +32,8 @@ TabModalConfirmDialogGtk::TabModalConfirmDialogGtk( |
TabModalConfirmDialogDelegate* delegate, |
content::WebContents* web_contents) |
: delegate_(delegate), |
- window_(NULL) { |
+ window_(NULL), |
+ closing_(false) { |
dialog_ = gtk_vbox_new(FALSE, ui::kContentAreaSpacing); |
GtkWidget* label = gtk_label_new( |
UTF16ToUTF8(delegate->GetMessage()).c_str()); |
@@ -108,6 +109,10 @@ TabModalConfirmDialogGtk::TabModalConfirmDialogGtk( |
} |
TabModalConfirmDialogGtk::~TabModalConfirmDialogGtk() { |
+ // Provide a disposition in case the dialog was closed without accepting or |
+ // cancelling. |
+ delegate_->Close(); |
+ |
gtk_widget_destroy(dialog_); |
} |
@@ -120,7 +125,10 @@ void TabModalConfirmDialogGtk::CancelTabModalDialog() { |
} |
void TabModalConfirmDialogGtk::CloseDialog() { |
- gtk_widget_destroy(window_); |
+ if (!closing_) { |
+ closing_ = true; |
+ gtk_widget_destroy(window_); |
+ } |
} |
void TabModalConfirmDialogGtk::OnAccept(GtkWidget* widget) { |