diff options
author | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-14 23:58:08 +0000 |
---|---|---|
committer | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-14 23:58:08 +0000 |
commit | 841b5d18b22145d0127cf72123b54c91a76fd64f (patch) | |
tree | 8712b530fa7349585a34a4bb58285cff6766cb2f /chrome/browser/gtk/menu_gtk.cc | |
parent | 8ab9ba5454bbd0bf079c1af4e3c8a5f30d058e0c (diff) | |
download | chromium_src-841b5d18b22145d0127cf72123b54c91a76fd64f.zip chromium_src-841b5d18b22145d0127cf72123b54c91a76fd64f.tar.gz chromium_src-841b5d18b22145d0127cf72123b54c91a76fd64f.tar.bz2 |
Simplify TabGtk::ContextMenuController by adding methods to dynamically build a MenuGtk and use them.
Review URL: http://codereview.chromium.org/68013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@13722 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/gtk/menu_gtk.cc')
-rw-r--r-- | chrome/browser/gtk/menu_gtk.cc | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/chrome/browser/gtk/menu_gtk.cc b/chrome/browser/gtk/menu_gtk.cc index 1a852d5..059755a 100644 --- a/chrome/browser/gtk/menu_gtk.cc +++ b/chrome/browser/gtk/menu_gtk.cc @@ -43,11 +43,12 @@ MenuGtk::MenuGtk(MenuGtk::Delegate* delegate, BuildMenuIn(menu_.get(), menu_data, accel_group); } -MenuGtk::MenuGtk(MenuGtk::Delegate* delegate) +MenuGtk::MenuGtk(MenuGtk::Delegate* delegate, bool load) : delegate_(delegate), dummy_accel_group_(NULL), menu_(gtk_menu_new()) { - BuildMenuFromDelegate(); + if (load) + BuildMenuFromDelegate(); } MenuGtk::~MenuGtk() { @@ -56,6 +57,26 @@ MenuGtk::~MenuGtk() { g_object_unref(dummy_accel_group_); } +void MenuGtk::AppendMenuItemWithLabel(int command_id, + const std::string& label) { + GtkWidget* menu_item = gtk_menu_item_new_with_label(label.c_str()); + + g_object_set_data(G_OBJECT(menu_item), "menu-id", + reinterpret_cast<void*>(command_id)); + + g_signal_connect(G_OBJECT(menu_item), "activate", + G_CALLBACK(OnMenuItemActivatedById), this); + + gtk_widget_show(menu_item); + gtk_menu_shell_append(GTK_MENU_SHELL(menu_.get()), menu_item); +} + +void MenuGtk::AppendSeparator() { + GtkWidget* menu_item = gtk_separator_menu_item_new(); + gtk_widget_show(menu_item); + gtk_menu_shell_append(GTK_MENU_SHELL(menu_.get()), menu_item); +} + void MenuGtk::Popup(GtkWidget* widget, GdkEvent* event) { DCHECK(event->type == GDK_BUTTON_PRESS) << "Non-button press event sent to RunMenuAt"; |