summaryrefslogtreecommitdiffstats
path: root/chrome/browser/gtk/menu_gtk.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/gtk/menu_gtk.cc')
-rw-r--r--chrome/browser/gtk/menu_gtk.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/chrome/browser/gtk/menu_gtk.cc b/chrome/browser/gtk/menu_gtk.cc
index c4aecb0..67de7b3 100644
--- a/chrome/browser/gtk/menu_gtk.cc
+++ b/chrome/browser/gtk/menu_gtk.cc
@@ -28,6 +28,7 @@ MenuGtk::MenuGtk(MenuGtk::Delegate* delegate,
menu_(gtk_menu_new()),
factory_(this) {
DCHECK(menu_data);
+ g_object_ref_sink(menu_);
ConnectSignalHandlers();
BuildMenuIn(menu_, menu_data);
}
@@ -38,6 +39,7 @@ MenuGtk::MenuGtk(MenuGtk::Delegate* delegate)
dummy_accel_group_(gtk_accel_group_new()),
menu_(gtk_menu_new()),
factory_(this) {
+ g_object_ref_sink(menu_);
ConnectSignalHandlers();
}
@@ -48,6 +50,7 @@ MenuGtk::MenuGtk(MenuGtk::Delegate* delegate,
dummy_accel_group_(gtk_accel_group_new()),
menu_(gtk_menu_new()),
factory_(this) {
+ g_object_ref_sink(menu_);
DCHECK(model);
ConnectSignalHandlers();
if (model)
@@ -55,6 +58,9 @@ MenuGtk::MenuGtk(MenuGtk::Delegate* delegate,
}
MenuGtk::~MenuGtk() {
+ Cancel();
+ g_object_unref(menu_);
+
STLDeleteContainerPointers(submenus_we_own_.begin(), submenus_we_own_.end());
g_object_unref(dummy_accel_group_);
}