Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1365)

Unified Diff: chrome/browser/gtk/task_manager_gtk.cc

Issue 345031: Destroy the TaskManagerGtk singleton instance when its window is destroyed, o... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/gtk/task_manager_gtk.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/gtk/task_manager_gtk.cc
===================================================================
--- chrome/browser/gtk/task_manager_gtk.cc (revision 30657)
+++ chrome/browser/gtk/task_manager_gtk.cc (working copy)
@@ -13,9 +13,7 @@
#include "app/l10n_util.h"
#include "app/resource_bundle.h"
#include "base/logging.h"
-#include "chrome/browser/browser_list.h"
#include "chrome/browser/browser_process.h"
-#include "chrome/browser/browser_window.h"
#include "chrome/browser/gtk/gtk_chrome_link_button.h"
#include "chrome/browser/gtk/gtk_theme_provider.h"
#include "chrome/browser/gtk/menu_gtk.h"
@@ -267,6 +265,8 @@
g_object_unref(accel_group_);
accel_group_ = NULL;
+ // Disconnect the destroy signal so it doesn't delete |this|.
+ g_signal_handler_disconnect(G_OBJECT(dialog_), destroy_handler_id_);
gtk_widget_destroy(dialog_);
}
@@ -375,6 +375,8 @@
gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog_)->vbox),
gtk_util::kContentAreaSpacing);
+ destroy_handler_id_ = g_signal_connect(G_OBJECT(dialog_), "destroy",
+ G_CALLBACK(OnDestroy), this);
g_signal_connect(G_OBJECT(dialog_), "response", G_CALLBACK(OnResponse), this);
g_signal_connect(G_OBJECT(dialog_), "button-release-event",
G_CALLBACK(OnButtonReleaseEvent), this);
@@ -672,6 +674,13 @@
}
// static
+void TaskManagerGtk::OnDestroy(GtkDialog* dialog,
+ TaskManagerGtk* task_manager) {
+ instance_ = NULL;
+ delete task_manager;
+}
+
+// static
void TaskManagerGtk::OnResponse(GtkDialog* dialog, gint response_id,
TaskManagerGtk* task_manager) {
if (response_id == GTK_RESPONSE_DELETE_EVENT) {
« no previous file with comments | « chrome/browser/gtk/task_manager_gtk.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698