| Index: chrome/browser/gtk/browser_window_gtk.cc
|
| ===================================================================
|
| --- chrome/browser/gtk/browser_window_gtk.cc (revision 22919)
|
| +++ chrome/browser/gtk/browser_window_gtk.cc (working copy)
|
| @@ -7,6 +7,8 @@
|
| #include <gdk/gdkkeysyms.h>
|
| #include <X11/XF86keysym.h>
|
|
|
| +#include <string>
|
| +
|
| #include "app/resource_bundle.h"
|
| #include "app/theme_provider.h"
|
| #include "base/base_paths_linux.h"
|
| @@ -390,7 +392,8 @@
|
| #endif
|
| frame_cursor_(NULL),
|
| is_active_(true),
|
| - last_click_time_(0) {
|
| + last_click_time_(0),
|
| + accel_group_(NULL) {
|
| use_custom_frame_.Init(prefs::kUseCustomChromeFrame,
|
| browser_->profile()->GetPrefs(), this);
|
|
|
| @@ -664,6 +667,19 @@
|
|
|
| SaveWindowPosition();
|
|
|
| + if (accel_group_) {
|
| + // Disconnecting the keys we connected to our accelerator group frees the
|
| + // closures allocated in ConnectAccelerators.
|
| + for (size_t i = 0; i < arraysize(kAcceleratorMap); ++i) {
|
| + gtk_accel_group_disconnect_key(accel_group_,
|
| + kAcceleratorMap[i].keyval,
|
| + kAcceleratorMap[i].modifier_type);
|
| + }
|
| + gtk_window_remove_accel_group(window_, accel_group_);
|
| + g_object_unref(accel_group_);
|
| + accel_group_ = NULL;
|
| + }
|
| +
|
| GtkWidget* window = GTK_WIDGET(window_);
|
| // To help catch bugs in any event handlers that might get fired during the
|
| // destruction, set window_ to NULL before any handlers will run.
|
| @@ -1430,14 +1446,12 @@
|
| }
|
|
|
| void BrowserWindowGtk::ConnectAccelerators() {
|
| - GtkAccelGroup* accel_group = gtk_accel_group_new();
|
| - gtk_window_add_accel_group(window_, accel_group);
|
| - // Drop the initial ref on |accel_group| so |window_| will own it.
|
| - g_object_unref(accel_group);
|
| + accel_group_ = gtk_accel_group_new();
|
| + gtk_window_add_accel_group(window_, accel_group_);
|
|
|
| for (size_t i = 0; i < arraysize(kAcceleratorMap); ++i) {
|
| gtk_accel_group_connect(
|
| - accel_group,
|
| + accel_group_,
|
| kAcceleratorMap[i].keyval,
|
| kAcceleratorMap[i].modifier_type,
|
| GtkAccelFlags(0),
|
|
|