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

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

Issue 202035: Fix accel leak in task manager and bookmark manager by using (Closed)
Patch Set: null Created 11 years, 3 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
diff --git a/chrome/browser/gtk/task_manager_gtk.cc b/chrome/browser/gtk/task_manager_gtk.cc
index f7f9906e454d5679e8a2f5658d7363c8397eec26..ebe66a0b5a644ae612649975cf18702b9a881f9c 100644
--- a/chrome/browser/gtk/task_manager_gtk.cc
+++ b/chrome/browser/gtk/task_manager_gtk.cc
@@ -249,6 +249,13 @@ TaskManagerGtk* TaskManagerGtk::instance_ = NULL;
TaskManagerGtk::~TaskManagerGtk() {
task_manager_->OnWindowClosed();
model_->RemoveObserver(this);
+
+ gtk_accel_group_disconnect_key(accel_group_, GDK_w, GDK_CONTROL_MASK);
+ gtk_window_remove_accel_group(GTK_WINDOW(dialog_), accel_group_);
+ g_object_unref(accel_group_);
+ accel_group_ = NULL;
+
+ gtk_widget_destroy(dialog_);
}
////////////////////////////////////////////////////////////////////////////////
@@ -431,13 +438,10 @@ void TaskManagerGtk::SetInitialDialogSize() {
}
void TaskManagerGtk::ConnectAccelerators() {
- GtkAccelGroup* accel_group = gtk_accel_group_new();
- gtk_window_add_accel_group(GTK_WINDOW(dialog_), accel_group);
-
- // Drop the initial ref on |accel_group| so |dialog_| will own it.
- g_object_unref(accel_group);
+ accel_group_ = gtk_accel_group_new();
+ gtk_window_add_accel_group(GTK_WINDOW(dialog_), accel_group_);
- gtk_accel_group_connect(accel_group,
+ gtk_accel_group_connect(accel_group_,
GDK_w, GDK_CONTROL_MASK, GtkAccelFlags(0),
g_cclosure_new(G_CALLBACK(OnGtkAccelerator),
this, NULL));
@@ -717,7 +721,6 @@ gboolean TaskManagerGtk::OnGtkAccelerator(GtkAccelGroup* accel_group,
// is destroyed. The deleted object will receive gtk signals otherwise.
gtk_dialog_response(GTK_DIALOG(task_manager->dialog_),
GTK_RESPONSE_DELETE_EVENT);
- gtk_widget_destroy(task_manager->dialog_);
}
return TRUE;
« 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