| Index: chrome/browser/ui/gtk/global_menu_bar.cc
|
| diff --git a/chrome/browser/ui/gtk/global_menu_bar.cc b/chrome/browser/ui/gtk/global_menu_bar.cc
|
| index 6e6f9fdc077dd824b45fb202466252ed3548bf70..76ac9ba8611cb2ef55c478e61346e67efc49807f 100644
|
| --- a/chrome/browser/ui/gtk/global_menu_bar.cc
|
| +++ b/chrome/browser/ui/gtk/global_menu_bar.cc
|
| @@ -56,24 +56,13 @@ GlobalMenuBarCommand file_menu[] = {
|
| { MENU_END, MENU_END }
|
| };
|
|
|
| -// TODO(erg): Need to add support for undo/redo/other editing commands that
|
| -// don't go through the command id framework.
|
| GlobalMenuBarCommand edit_menu[] = {
|
| - // TODO(erg): Undo
|
| - // TODO(erg): Redo
|
| -
|
| - // TODO(erg): Separator
|
| -
|
| { IDS_CUT, IDC_CUT },
|
| { IDS_COPY, IDC_COPY },
|
| { IDS_PASTE, IDC_PASTE },
|
| - // TODO(erg): Delete
|
|
|
| { MENU_SEPARATOR, MENU_SEPARATOR },
|
|
|
| - // TODO(erg): Select All
|
| - // TODO(erg): Another separator
|
| -
|
| { IDS_FIND, IDC_FIND },
|
|
|
| { MENU_SEPARATOR, MENU_SEPARATOR },
|
| @@ -83,8 +72,6 @@ GlobalMenuBarCommand edit_menu[] = {
|
| { MENU_END, MENU_END }
|
| };
|
|
|
| -// TODO(erg): The View menu should be overhauled and based on the Firefox view
|
| -// menu.
|
| GlobalMenuBarCommand view_menu[] = {
|
| { IDS_SHOW_BOOKMARK_BAR, IDC_SHOW_BOOKMARK_BAR },
|
|
|
| @@ -176,15 +163,15 @@ GlobalMenuBar::GlobalMenuBar(Browser* browser)
|
| // Set a nice name so it shows up in gtkparasite and others.
|
| gtk_widget_set_name(menu_bar_.get(), "chrome-hidden-global-menubar");
|
|
|
| - BuildGtkMenuFrom(IDS_FILE_MENU_LINUX, &id_to_menu_item_, file_menu);
|
| - BuildGtkMenuFrom(IDS_EDIT_MENU_LINUX, &id_to_menu_item_, edit_menu);
|
| - BuildGtkMenuFrom(IDS_VIEW_MENU_LINUX, &id_to_menu_item_, view_menu);
|
| - history_menu_.Init(BuildGtkMenuFrom(IDS_HISTORY_MENU_LINUX, &id_to_menu_item_,
|
| - history_menu));
|
| - bookmark_menu_.Init(BuildGtkMenuFrom(IDS_BOOKMARKS_MENU_LINUX,
|
| - &id_to_menu_item_, bookmark_menu));
|
| - BuildGtkMenuFrom(IDS_TOOLS_MENU_LINUX, &id_to_menu_item_, tools_menu);
|
| - BuildGtkMenuFrom(IDS_HELP_MENU_LINUX, &id_to_menu_item_, help_menu);
|
| + BuildGtkMenuFrom(IDS_FILE_MENU_LINUX, &id_to_menu_item_, file_menu, NULL);
|
| + BuildGtkMenuFrom(IDS_EDIT_MENU_LINUX, &id_to_menu_item_, edit_menu, NULL);
|
| + BuildGtkMenuFrom(IDS_VIEW_MENU_LINUX, &id_to_menu_item_, view_menu, NULL);
|
| + BuildGtkMenuFrom(IDS_HISTORY_MENU_LINUX, &id_to_menu_item_,
|
| + history_menu, &history_menu_);
|
| + BuildGtkMenuFrom(IDS_BOOKMARKS_MENU_LINUX, &id_to_menu_item_, bookmark_menu,
|
| + &bookmark_menu_);
|
| + BuildGtkMenuFrom(IDS_TOOLS_MENU_LINUX, &id_to_menu_item_, tools_menu, NULL);
|
| + BuildGtkMenuFrom(IDS_HELP_MENU_LINUX, &id_to_menu_item_, help_menu, NULL);
|
|
|
| for (CommandIDMenuItemMap::const_iterator it = id_to_menu_item_.begin();
|
| it != id_to_menu_item_.end(); ++it) {
|
| @@ -226,10 +213,11 @@ GlobalMenuBar::~GlobalMenuBar() {
|
| g_object_unref(dummy_accel_group_);
|
| }
|
|
|
| -GtkWidget* GlobalMenuBar::BuildGtkMenuFrom(
|
| +void GlobalMenuBar::BuildGtkMenuFrom(
|
| int menu_str_id,
|
| std::map<int, GtkWidget*>* id_to_menu_item,
|
| - GlobalMenuBarCommand* commands) {
|
| + GlobalMenuBarCommand* commands,
|
| + GlobalMenuOwner* owner) {
|
| GtkWidget* menu = gtk_menu_new();
|
| for (int i = 0; commands[i].str_id != MENU_END; ++i) {
|
| GtkWidget* menu_item = BuildMenuItem(
|
| @@ -243,11 +231,15 @@ GtkWidget* GlobalMenuBar::BuildGtkMenuFrom(
|
| GtkWidget* menu_item = gtk_menu_item_new_with_mnemonic(
|
| gfx::ConvertAcceleratorsFromWindowsStyle(
|
| l10n_util::GetStringUTF8(menu_str_id)).c_str());
|
| +
|
| + // Give the owner a chance to sink the reference before we add it to the menu
|
| + // bar.
|
| + if (owner)
|
| + owner->Init(menu, menu_item);
|
| +
|
| gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item), menu);
|
| gtk_widget_show(menu_item);
|
| gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar_.get()), menu_item);
|
| -
|
| - return menu;
|
| }
|
|
|
| GtkWidget* GlobalMenuBar::BuildMenuItem(
|
|
|