| 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) {
|
|
|