summaryrefslogtreecommitdiffstats
path: root/chrome/browser/gtk/menu_gtk.cc
diff options
context:
space:
mode:
authorjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-14 23:58:08 +0000
committerjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-14 23:58:08 +0000
commit841b5d18b22145d0127cf72123b54c91a76fd64f (patch)
tree8712b530fa7349585a34a4bb58285cff6766cb2f /chrome/browser/gtk/menu_gtk.cc
parent8ab9ba5454bbd0bf079c1af4e3c8a5f30d058e0c (diff)
downloadchromium_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.cc25
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";