summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
Diffstat (limited to 'chrome')
-rw-r--r--chrome/app/generated_resources.grd9
-rw-r--r--chrome/browser/back_forward_menu_model.cc5
-rw-r--r--chrome/browser/back_forward_menu_model.h1
-rw-r--r--chrome/browser/gtk/gtk_custom_menu.cc144
-rw-r--r--chrome/browser/gtk/gtk_custom_menu.h53
-rw-r--r--chrome/browser/gtk/gtk_custom_menu_item.cc282
-rw-r--r--chrome/browser/gtk/gtk_custom_menu_item.h118
-rw-r--r--chrome/browser/gtk/gtk_util.cc19
-rw-r--r--chrome/browser/gtk/gtk_util.h3
-rw-r--r--chrome/browser/gtk/menu_gtk.cc91
-rw-r--r--chrome/browser/gtk/menu_gtk.h10
-rw-r--r--chrome/browser/gtk/notifications/notification_options_menu_model.cc5
-rw-r--r--chrome/browser/gtk/notifications/notification_options_menu_model.h1
-rw-r--r--chrome/browser/wrench_menu_model.cc86
-rw-r--r--chrome/browser/wrench_menu_model.h52
-rw-r--r--chrome/chrome_browser.gypi8
16 files changed, 22 insertions, 865 deletions
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index aefbd86..ebb8b7c 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -822,21 +822,12 @@ each locale. -->
<message name="IDS_ZOOM_PLUS" desc="In Title Case: The text label of the Make Text Larger menu item">
&amp;Larger
</message>
- <message name="IDS_ZOOM_PLUS2" desc="The text label of the Make Text Larger menu item in the merged menu">
- +
- </message>
<message name="IDS_ZOOM_NORMAL" desc="In Title Case: The text label of the Make Text Normal Size menu item">
&amp;Normal
</message>
<message name="IDS_ZOOM_MINUS" desc="In Title Case: The text label of the Make Text Smaller menu item">
&amp;Smaller
</message>
- <message name="IDS_ZOOM_MINUS2" desc="The text label of the Make Text Smaller menu item in the merged menu">
- -
- </message>
- <message name="IDS_ZOOM_PERCENT" desc="Current pages zoom factor; shown in merged menu">
- <ph name="VALUE">$1<ex>100</ex></ph>%
- </message>
<message name="IDS_ENCODING_MENU" desc="In Title Case: The text label of the Encoding submenu">
&amp;Encoding
</message>
diff --git a/chrome/browser/back_forward_menu_model.cc b/chrome/browser/back_forward_menu_model.cc
index 5a164e7..e1bc742 100644
--- a/chrome/browser/back_forward_menu_model.cc
+++ b/chrome/browser/back_forward_menu_model.cc
@@ -115,11 +115,6 @@ bool BackForwardMenuModel::GetIconAt(int index, SkBitmap* icon) const {
return true;
}
-menus::ButtonMenuItemModel* BackForwardMenuModel::GetButtonMenuItemAt(
- int index) const {
- return NULL;
-}
-
bool BackForwardMenuModel::IsEnabledAt(int index) const {
return index < GetItemCount() && !IsSeparator(index);
}
diff --git a/chrome/browser/back_forward_menu_model.h b/chrome/browser/back_forward_menu_model.h
index 2315a41..802c6a6 100644
--- a/chrome/browser/back_forward_menu_model.h
+++ b/chrome/browser/back_forward_menu_model.h
@@ -53,7 +53,6 @@ class BackForwardMenuModel : public menus::MenuModel {
virtual bool IsItemCheckedAt(int index) const;
virtual int GetGroupIdAt(int index) const;
virtual bool GetIconAt(int index, SkBitmap* icon) const;
- virtual menus::ButtonMenuItemModel* GetButtonMenuItemAt(int index) const;
virtual bool IsEnabledAt(int index) const;
virtual MenuModel* GetSubmenuModelAt(int index) const;
virtual void HighlightChangedTo(int index);
diff --git a/chrome/browser/gtk/gtk_custom_menu.cc b/chrome/browser/gtk/gtk_custom_menu.cc
deleted file mode 100644
index d666091..0000000
--- a/chrome/browser/gtk/gtk_custom_menu.cc
+++ /dev/null
@@ -1,144 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/gtk/gtk_custom_menu.h"
-
-#include "chrome/browser/gtk/gtk_custom_menu_item.h"
-
-G_DEFINE_TYPE(GtkCustomMenu, gtk_custom_menu, GTK_TYPE_MENU)
-
-// Stolen directly from gtkmenushell.c. I'd love to call the library version
-// instead, but it's static and isn't exported. :(
-static gint gtk_menu_shell_is_item(GtkMenuShell* menu_shell,
- GtkWidget* child) {
- GtkWidget *parent;
-
- g_return_val_if_fail(GTK_IS_MENU_SHELL(menu_shell), FALSE);
- g_return_val_if_fail(child != NULL, FALSE);
-
- parent = child->parent;
- while (GTK_IS_MENU_SHELL(parent)) {
- if (parent == reinterpret_cast<GtkWidget*>(menu_shell))
- return TRUE;
- parent = GTK_MENU_SHELL(parent)->parent_menu_shell;
- }
-
- return FALSE;
-}
-
-// Stolen directly from gtkmenushell.c. I'd love to call the library version
-// instead, but it's static and isn't exported. :(
-static GtkWidget* gtk_menu_shell_get_item(GtkMenuShell* menu_shell,
- GdkEvent* event) {
- GtkWidget* menu_item = gtk_get_event_widget(event);
-
- while (menu_item && !GTK_IS_MENU_ITEM(menu_item))
- menu_item = menu_item->parent;
-
- if (menu_item && gtk_menu_shell_is_item(menu_shell, menu_item))
- return menu_item;
- else
- return NULL;
-}
-
-// When processing a button event, abort processing if the cursor isn't in a
-// clickable region.
-static gboolean gtk_custom_menu_button_press(GtkWidget* widget,
- GdkEventButton* event) {
- GtkWidget* menu_item = gtk_menu_shell_get_item(
- GTK_MENU_SHELL(widget), reinterpret_cast<GdkEvent*>(event));
- if (GTK_IS_CUSTOM_MENU_ITEM(menu_item)) {
- if (!gtk_custom_menu_item_is_in_clickable_region(
- GTK_CUSTOM_MENU_ITEM(menu_item))) {
- return TRUE;
- }
- }
-
- return GTK_WIDGET_CLASS(gtk_custom_menu_parent_class)->
- button_press_event(widget, event);
-}
-
-// When processing a button event, abort processing if the cursor isn't in a
-// clickable region.
-static gboolean gtk_custom_menu_button_release(GtkWidget* widget,
- GdkEventButton* event) {
- GtkWidget* menu_item = gtk_menu_shell_get_item(
- GTK_MENU_SHELL(widget), reinterpret_cast<GdkEvent*>(event));
- if (GTK_IS_CUSTOM_MENU_ITEM(menu_item)) {
- if (!gtk_custom_menu_item_is_in_clickable_region(
- GTK_CUSTOM_MENU_ITEM(menu_item))) {
- // Stop processing this event. This isn't a clickable region.
- return TRUE;
- }
- }
-
- return GTK_WIDGET_CLASS(gtk_custom_menu_parent_class)->
- button_release_event(widget, event);
-}
-
-// Manually forward button press events to the menu item (and then do what we'd
-// do normally).
-static gboolean gtk_custom_menu_motion_notify(GtkWidget* widget,
- GdkEventMotion* event) {
- GtkWidget* menu_item = gtk_menu_shell_get_item(
- GTK_MENU_SHELL(widget), (GdkEvent*)event);
- if (GTK_IS_CUSTOM_MENU_ITEM(menu_item)) {
- gtk_custom_menu_item_receive_motion_event(GTK_CUSTOM_MENU_ITEM(menu_item),
- event->x, event->y);
- }
-
- return GTK_WIDGET_CLASS(gtk_custom_menu_parent_class)->
- motion_notify_event(widget, event);
-}
-
-static void gtk_custom_menu_move_current(GtkMenuShell* menu_shell,
- GtkMenuDirectionType direction) {
- // If the currently selected item is custom, we give it first chance to catch
- // up/down events.
-
- // TODO(erg): We are breaking a GSEAL by directly accessing this. We'll need
- // to fix this by the time gtk3 comes out.
- GtkWidget* menu_item = GTK_MENU_SHELL(menu_shell)->active_menu_item;
- if (GTK_IS_CUSTOM_MENU_ITEM(menu_item)) {
- switch (direction) {
- case GTK_MENU_DIR_PREV:
- case GTK_MENU_DIR_NEXT:
- if (gtk_custom_menu_item_handle_move(GTK_CUSTOM_MENU_ITEM(menu_item),
- direction))
- return;
- break;
- default:
- break;
- }
- }
-
- GTK_MENU_SHELL_CLASS(gtk_custom_menu_parent_class)->
- move_current(menu_shell, direction);
-
- // In the case of hitting PREV and transitioning to a custom menu, we want to
- // make sure we're selecting the final item in the list, not the first one.
- menu_item = GTK_MENU_SHELL(menu_shell)->active_menu_item;
- if (GTK_IS_CUSTOM_MENU_ITEM(menu_item)) {
- gtk_custom_menu_item_select_item_by_direction(
- GTK_CUSTOM_MENU_ITEM(menu_item), direction);
- }
-}
-
-static void gtk_custom_menu_init(GtkCustomMenu* menu) {
-}
-
-static void gtk_custom_menu_class_init(GtkCustomMenuClass* klass) {
- GtkWidgetClass* widget_class = GTK_WIDGET_CLASS(klass);
- GtkMenuShellClass* menu_shell_class = GTK_MENU_SHELL_CLASS(klass);
-
- widget_class->button_press_event = gtk_custom_menu_button_press;
- widget_class->button_release_event = gtk_custom_menu_button_release;
- widget_class->motion_notify_event = gtk_custom_menu_motion_notify;
-
- menu_shell_class->move_current = gtk_custom_menu_move_current;
-}
-
-GtkWidget* gtk_custom_menu_new() {
- return GTK_WIDGET(g_object_new(GTK_TYPE_CUSTOM_MENU, NULL));
-}
diff --git a/chrome/browser/gtk/gtk_custom_menu.h b/chrome/browser/gtk/gtk_custom_menu.h
deleted file mode 100644
index a2fc757..0000000
--- a/chrome/browser/gtk/gtk_custom_menu.h
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_GTK_GTK_CUSTOM_MENU_H_
-#define CHROME_BROWSER_GTK_GTK_CUSTOM_MENU_H_
-
-// GtkCustomMenu is a GtkMenu subclass that can contain, and collaborates with,
-// GtkCustomMenuItem instances. GtkCustomMenuItem is a GtkMenuItem that can
-// have buttons and other normal widgets embeded in it. GtkCustomMenu exists
-// only to override most of the button/motion/move callback functions so
-// that the normal GtkMenu implementation doesn't handle events related to
-// GtkCustomMenuItem items.
-//
-// For a more through overview of this system, see the comments in
-// gtk_custom_menu_item.h.
-
-#include <gdk/gdk.h>
-#include <gtk/gtk.h>
-#include <gtk/gtkmenuitem.h>
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_CUSTOM_MENU \
- (gtk_custom_menu_get_type())
-#define GTK_CUSTOM_MENU(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), GTK_TYPE_CUSTOM_MENU, GtkCustomMenu))
-#define GTK_CUSTOM_MENU_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), GTK_TYPE_CUSTOM_MENU, GtkCustomMenuClass))
-#define GTK_IS_CUSTOM_MENU(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), GTK_TYPE_CUSTOM_MENU))
-#define GTK_IS_CUSTOM_MENU_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), GTK_TYPE_CUSTOM_MENU))
-#define GTK_CUSTOM_MENU_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), GTK_TYPE_CUSTOM_MENU, GtkCustomMenuClass))
-
-typedef struct _GtkCustomMenu GtkCustomMenu;
-typedef struct _GtkCustomMenuClass GtkCustomMenuClass;
-
-struct _GtkCustomMenu {
- GtkMenu menu;
-};
-
-struct _GtkCustomMenuClass {
- GtkMenuClass parent_class;
-};
-
-GType gtk_custom_menu_get_type(void) G_GNUC_CONST;
-GtkWidget* gtk_custom_menu_new();
-
-G_END_DECLS
-
-#endif // CHROME_BROWSER_GTK_GTK_CUSTOM_MENU_H_
diff --git a/chrome/browser/gtk/gtk_custom_menu_item.cc b/chrome/browser/gtk/gtk_custom_menu_item.cc
deleted file mode 100644
index f925c48..0000000
--- a/chrome/browser/gtk/gtk_custom_menu_item.cc
+++ /dev/null
@@ -1,282 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/gtk/gtk_custom_menu_item.h"
-
-#include "base/logging.h"
-#include "chrome/browser/gtk/gtk_custom_menu.h"
-
-enum {
- BUTTON_PUSHED,
- LAST_SIGNAL
-};
-
-static guint custom_menu_item_signals[LAST_SIGNAL] = { 0 };
-
-G_DEFINE_TYPE(GtkCustomMenuItem, gtk_custom_menu_item, GTK_TYPE_MENU_ITEM)
-
-static void set_selected(GtkCustomMenuItem* item, GtkWidget* selected) {
- if (selected != item->currently_selected_button) {
- if (item->currently_selected_button)
- gtk_widget_set_state(item->currently_selected_button, GTK_STATE_NORMAL);
-
- item->currently_selected_button = selected;
- if (item->currently_selected_button)
- gtk_widget_set_state(item->currently_selected_button, GTK_STATE_SELECTED);
- }
-}
-
-static void gtk_custom_menu_item_finalize(GObject *object);
-static gint gtk_custom_menu_item_expose(GtkWidget* widget,
- GdkEventExpose* event);
-static void gtk_custom_menu_item_select(GtkItem *item);
-static void gtk_custom_menu_item_deselect(GtkItem *item);
-static void gtk_custom_menu_item_activate(GtkMenuItem* menu_item);
-
-static void gtk_custom_menu_item_style_set(GtkCustomMenuItem* item,
- GtkStyle* old_style) {
- // Because several popular themes have no idea about styling buttons in menus
- // (it's sort of a weird concept) and look like crap, we manually apply the
- // menu item's prelight information to the button.
- GtkStyle* style = gtk_widget_get_style(GTK_WIDGET(item));
-
- for (GList* i = item->button_widgets; i; i = g_list_next(i)) {
- // Set the button prelight colors.
- GtkWidget* button = GTK_WIDGET(i->data);
- gtk_widget_modify_fg(button, GTK_STATE_PRELIGHT,
- &style->fg[GTK_STATE_PRELIGHT]);
- gtk_widget_modify_bg(button, GTK_STATE_PRELIGHT,
- &style->bg[GTK_STATE_PRELIGHT]);
- gtk_widget_modify_text(button, GTK_STATE_PRELIGHT,
- &style->text[GTK_STATE_PRELIGHT]);
- gtk_widget_modify_base(button, GTK_STATE_PRELIGHT,
- &style->base[GTK_STATE_PRELIGHT]);
- }
-}
-
-static void gtk_custom_menu_item_init(GtkCustomMenuItem* item) {
- item->button_widgets = NULL;
- item->currently_selected_button = NULL;
- item->previously_selected_button = NULL;
-
- GtkWidget* menu_hbox = gtk_hbox_new(FALSE, 0);
- gtk_container_add(GTK_CONTAINER(item), menu_hbox);
-
- item->label = gtk_label_new(NULL);
- gtk_misc_set_alignment(GTK_MISC(item->label), 0.0, 0.5);
- gtk_box_pack_start(GTK_BOX(menu_hbox), item->label, TRUE, TRUE, 0);
-
- item->hbox = gtk_hbox_new(FALSE, 0);
- gtk_box_pack_end(GTK_BOX(menu_hbox), item->hbox, FALSE, FALSE, 0);
-
- g_signal_connect(item, "style-set",
- G_CALLBACK(gtk_custom_menu_item_style_set), NULL);
-
- gtk_widget_show_all(menu_hbox);
-}
-
-static void gtk_custom_menu_item_class_init(GtkCustomMenuItemClass* klass) {
- GObjectClass* gobject_class = G_OBJECT_CLASS(klass);
- GtkWidgetClass* widget_class = GTK_WIDGET_CLASS(klass);
- GtkItemClass* item_class = GTK_ITEM_CLASS(klass);
- GtkMenuItemClass* menu_item_class = GTK_MENU_ITEM_CLASS(klass);
-
- gobject_class->finalize = gtk_custom_menu_item_finalize;
-
- widget_class->expose_event = gtk_custom_menu_item_expose;
-
- item_class->select = gtk_custom_menu_item_select;
- item_class->deselect = gtk_custom_menu_item_deselect;
-
- menu_item_class->activate = gtk_custom_menu_item_activate;
-
- custom_menu_item_signals[BUTTON_PUSHED] =
- g_signal_new("button-pushed",
- G_OBJECT_CLASS_TYPE(gobject_class),
- G_SIGNAL_RUN_FIRST,
- 0,
- NULL, NULL,
- gtk_marshal_NONE__INT,
- G_TYPE_NONE, 1, GTK_TYPE_INT);
-}
-
-static void gtk_custom_menu_item_finalize(GObject *object) {
- GtkCustomMenuItem* item = GTK_CUSTOM_MENU_ITEM(object);
- g_list_free(item->button_widgets);
-
- G_OBJECT_CLASS(gtk_custom_menu_item_parent_class)->finalize(object);
-}
-
-static gint gtk_custom_menu_item_expose(GtkWidget* widget,
- GdkEventExpose* event) {
- if (GTK_WIDGET_VISIBLE(widget) &&
- GTK_WIDGET_MAPPED(widget) &&
- gtk_bin_get_child(GTK_BIN(widget))) {
- // We skip the drawing in the GtkMenuItem class it draws the highlighted
- // background and we don't want that.
- gtk_container_propagate_expose(GTK_CONTAINER(widget),
- gtk_bin_get_child(GTK_BIN(widget)),
- event);
- }
-
- return FALSE;
-}
-
-static void gtk_custom_menu_item_select(GtkItem* item) {
- GtkCustomMenuItem* custom_item = GTK_CUSTOM_MENU_ITEM(item);
-
- // When we are selected, the only thing we do is clear information from
- // previous selections. Actual selection of a button is done either in the
- // "mouse-motion-event" or is manually set from GtkCustomMenu's overridden
- // "move-current" handler.
- custom_item->previously_selected_button = NULL;
-
- gtk_widget_queue_draw(GTK_WIDGET(item));
-}
-
-static void gtk_custom_menu_item_deselect(GtkItem* item) {
- GtkCustomMenuItem* custom_item = GTK_CUSTOM_MENU_ITEM(item);
-
- // When we are deselected, we store the item that was currently selected so
- // that it can be acted on. Menu items are first deselected before they are
- // activated.
- custom_item->previously_selected_button =
- custom_item->currently_selected_button;
- if (custom_item->currently_selected_button)
- set_selected(custom_item, NULL);
-
- gtk_widget_queue_draw(GTK_WIDGET(item));
-}
-
-static void gtk_custom_menu_item_activate(GtkMenuItem* menu_item) {
- GtkCustomMenuItem* custom_item = GTK_CUSTOM_MENU_ITEM(menu_item);
-
- // We look at |previously_selected_button| because by the time we've been
- // activated, we've already gone through our deselect handler.
- if (custom_item->previously_selected_button) {
- gpointer id_ptr = g_object_get_data(
- G_OBJECT(custom_item->previously_selected_button), "command-id");
- if (id_ptr != NULL) {
- int command_id = GPOINTER_TO_INT(id_ptr);
- g_signal_emit(custom_item, custom_menu_item_signals[BUTTON_PUSHED], 0,
- command_id);
- set_selected(custom_item, NULL);
- }
- }
-}
-
-GtkWidget* gtk_custom_menu_item_new(const char* title) {
- GtkCustomMenuItem* item = GTK_CUSTOM_MENU_ITEM(
- g_object_new(GTK_TYPE_CUSTOM_MENU_ITEM, NULL));
-
- char* markup = g_markup_printf_escaped("<b>%s</b>", title);
- gtk_label_set_markup(GTK_LABEL(item->label), markup);
- g_free(markup);
-
- return GTK_WIDGET(item);
-}
-
-GtkWidget* gtk_custom_menu_item_add_button(GtkCustomMenuItem* menu_item,
- int command_id) {
- GtkWidget* button = gtk_button_new();
- g_object_set_data(G_OBJECT(button), "command-id",
- GINT_TO_POINTER(command_id));
- gtk_box_pack_start(GTK_BOX(menu_item->hbox), button, FALSE, FALSE, 0);
- gtk_widget_show(button);
-
- menu_item->button_widgets = g_list_append(menu_item->button_widgets, button);
- return button;
-}
-
-void gtk_custom_menu_item_add_space(GtkCustomMenuItem* menu_item) {
- GtkWidget* fixed = gtk_fixed_new();
- gtk_widget_set_size_request(fixed, 5, -1);
-
- gtk_box_pack_start(GTK_BOX(menu_item->hbox), fixed, FALSE, FALSE, 0);
- gtk_widget_show(fixed);
-}
-
-void gtk_custom_menu_item_receive_motion_event(GtkCustomMenuItem* menu_item,
- gdouble x, gdouble y) {
- GtkWidget* new_selected_widget = NULL;
- GList* current = menu_item->button_widgets;
- for (; current != NULL; current = current->next) {
- GtkWidget* current_widget = GTK_WIDGET(current->data);
- GtkAllocation alloc = current_widget->allocation;
- int offset_x, offset_y;
- gtk_widget_translate_coordinates(current_widget, GTK_WIDGET(menu_item),
- 0, 0, &offset_x, &offset_y);
- if (x >= offset_x && x < (offset_x + alloc.width) &&
- y >= offset_y && y < (offset_y + alloc.height)) {
- new_selected_widget = current_widget;
- break;
- }
- }
-
- set_selected(menu_item, new_selected_widget);
-}
-
-gboolean gtk_custom_menu_item_handle_move(GtkCustomMenuItem* menu_item,
- GtkMenuDirectionType direction) {
- GtkWidget* current = menu_item->currently_selected_button;
- if (menu_item->button_widgets && current) {
- switch (direction) {
- case GTK_MENU_DIR_PREV: {
- if (g_list_first(menu_item->button_widgets)->data == current)
- return FALSE;
-
- set_selected(menu_item, GTK_WIDGET(g_list_previous(g_list_find(
- menu_item->button_widgets, current))->data));
- break;
- }
- case GTK_MENU_DIR_NEXT: {
- if (g_list_last(menu_item->button_widgets)->data == current)
- return FALSE;
-
- set_selected(menu_item, GTK_WIDGET(g_list_next(g_list_find(
- menu_item->button_widgets, current))->data));
- break;
- }
- default:
- break;
- }
- }
-
- return TRUE;
-}
-
-void gtk_custom_menu_item_select_item_by_direction(
- GtkCustomMenuItem* menu_item, GtkMenuDirectionType direction) {
- menu_item->previously_selected_button = NULL;
-
- // If we're just told to be selected by the menu system, select the first
- // item.
- if (menu_item->button_widgets) {
- switch (direction) {
- case GTK_MENU_DIR_PREV: {
- GtkWidget* last_button =
- GTK_WIDGET(g_list_last(menu_item->button_widgets)->data);
- if (last_button)
- set_selected(menu_item, last_button);
- break;
- }
- case GTK_MENU_DIR_NEXT: {
- GtkWidget* first_button =
- GTK_WIDGET(g_list_first(menu_item->button_widgets)->data);
- if (first_button)
- set_selected(menu_item, first_button);
- break;
- }
- default:
- break;
- }
- }
-
- gtk_widget_queue_draw(GTK_WIDGET(menu_item));
-}
-
-gboolean gtk_custom_menu_item_is_in_clickable_region(
- GtkCustomMenuItem* menu_item) {
- return menu_item->currently_selected_button != NULL;
-}
diff --git a/chrome/browser/gtk/gtk_custom_menu_item.h b/chrome/browser/gtk/gtk_custom_menu_item.h
deleted file mode 100644
index a7c152b..0000000
--- a/chrome/browser/gtk/gtk_custom_menu_item.h
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_GTK_GTK_CUSTOM_MENU_ITEM_H_
-#define CHROME_BROWSER_GTK_GTK_CUSTOM_MENU_ITEM_H_
-
-// GtkCustomMenuItem is a GtkMenuItem subclass that has buttons in it and acts
-// to support this. GtkCustomMenuItems only render properly when put in a
-// GtkCustomMenu; there's a lot of collaboration between these two classes
-// necessary to work around how gtk normally does menus.
-//
-// We can't rely on the normal event infrastructure. While a menu is up, the
-// GtkMenu has a grab on all events. Instead of trying to pump events through
-// the normal channels, we have the GtkCustomMenu selectively forward mouse
-// motion through a back channel. The GtkCustomMenu only listens for button
-// press information so it can block the effects of the click if the cursor
-// isn't in a button in the menu item.
-//
-// A GtkCustomMenuItem doesn't try to take these signals and forward them to
-// the buttons it owns. The GtkCustomMenu class keeps track of which button is
-// selected (due to key events and mouse movement) and otherwise acts like a
-// normal GtkItem. The buttons are only for sizing and rendering; they don't
-// respond to events. Instead, when the GtkCustomMenuItem is activated by the
-// GtkMenu, it uses which button was selected as a signal of what to do.
-//
-// Users should connect to the "button-pushed" signal to be notified when a
-// button was pushed. We don't go through the normal "activate" signal because
-// we need to communicate additional information, namely which button was
-// activated.
-
-#include <gdk/gdk.h>
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_CUSTOM_MENU_ITEM \
- (gtk_custom_menu_item_get_type())
-#define GTK_CUSTOM_MENU_ITEM(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), GTK_TYPE_CUSTOM_MENU_ITEM, \
- GtkCustomMenuItem))
-#define GTK_CUSTOM_MENU_ITEM_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), GTK_TYPE_CUSTOM_MENU_ITEM, \
- GtkCustomMenuItemClass))
-#define GTK_IS_CUSTOM_MENU_ITEM(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), GTK_TYPE_CUSTOM_MENU_ITEM))
-#define GTK_IS_CUSTOM_MENU_ITEM_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), GTK_TYPE_CUSTOM_MENU_ITEM))
-#define GTK_CUSTOM_MENU_ITEM_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), GTK_TYPE_CUSTOM_MENU_ITEM, \
- GtkCustomMenuItemClass))
-
-typedef struct _GtkCustomMenuItem GtkCustomMenuItem;
-typedef struct _GtkCustomMenuItemClass GtkCustomMenuItemClass;
-
-struct _GtkCustomMenuItem {
- GtkMenuItem menu_item;
-
- // Container for button widgets.
- GtkWidget* hbox;
-
- // Label on left side of menu item.
- GtkWidget* label;
-
- // Possible button widgets
- GList* button_widgets;
-
- // The widget that currently has highlight.
- GtkWidget* currently_selected_button;
-
- // The widget that was selected *before* |currently_selected_button|. Why do
- // we hang on to this? Because the menu system sends us a deselect signal
- // right before activating us. We need to listen to deselect since that's
- // what we receive when the mouse cursor leaves us entirely.
- GtkWidget* previously_selected_button;
-};
-
-struct _GtkCustomMenuItemClass {
- GtkMenuItemClass parent_class;
-};
-
-GType gtk_custom_menu_item_get_type(void) G_GNUC_CONST;
-GtkWidget* gtk_custom_menu_item_new(const char* title);
-
-// Adds a button to our list of items in the |hbox|.
-GtkWidget* gtk_custom_menu_item_add_button(GtkCustomMenuItem* menu_item,
- int command_id);
-
-// Adds a vertical space in the |hbox|.
-void gtk_custom_menu_item_add_space(GtkCustomMenuItem* menu_item);
-
-// Receives a motion event from the GtkCustomMenu that contains us. We can't
-// just subscribe to motion-event or the individual widget enter/leave events
-// because the top level GtkMenu has an event grab.
-void gtk_custom_menu_item_receive_motion_event(GtkCustomMenuItem* menu_item,
- gdouble x, gdouble y);
-
-// Notification that the menu got a cursor key event. Used to move up/down
-// within the menu buttons. Returns TRUE to stop the default signal handler
-// from running.
-gboolean gtk_custom_menu_item_handle_move(GtkCustomMenuItem* menu_item,
- GtkMenuDirectionType direction);
-
-// Because we only get a generic "selected" signal when we've changed, we need
-// to have a way for the GtkCustomMenu to tell us that we were just
-// selected.
-void gtk_custom_menu_item_select_item_by_direction(
- GtkCustomMenuItem* menu_item, GtkMenuDirectionType direction);
-
-// Whether we are currently hovering over a clickable region on the menu
-// item. Used by GtkCustomMenu to determine whether it should discard click
-// events.
-gboolean gtk_custom_menu_item_is_in_clickable_region(
- GtkCustomMenuItem* menu_item);
-
-G_END_DECLS
-
-#endif // CHROME_BROWSER_GTK_GTK_CUSTOM_MENU_ITEM_H_
diff --git a/chrome/browser/gtk/gtk_util.cc b/chrome/browser/gtk/gtk_util.cc
index 62f1af0..1bca63ed 100644
--- a/chrome/browser/gtk/gtk_util.cc
+++ b/chrome/browser/gtk/gtk_util.cc
@@ -449,12 +449,7 @@ GtkWidget* CenterWidgetInHBox(GtkWidget* hbox, GtkWidget* widget,
return centering_vbox;
}
-namespace {
-
-// Common implementation of ConvertAcceleratorsFromWindowsStyle() and
-// RemoveWindowsStyleAccelerators().
-std::string ConvertAmperstandsTo(const std::string& label,
- const std::string& target) {
+std::string ConvertAcceleratorsFromWindowsStyle(const std::string& label) {
std::string ret;
ret.reserve(label.length() * 2);
for (size_t i = 0; i < label.length(); ++i) {
@@ -466,7 +461,7 @@ std::string ConvertAmperstandsTo(const std::string& label,
ret.push_back(label[i]);
++i;
} else {
- ret.append(target);
+ ret.push_back('_');
}
} else {
ret.push_back(label[i]);
@@ -476,16 +471,6 @@ std::string ConvertAmperstandsTo(const std::string& label,
return ret;
}
-} // namespace
-
-std::string ConvertAcceleratorsFromWindowsStyle(const std::string& label) {
- return ConvertAmperstandsTo(label, "_");
-}
-
-std::string RemoveWindowsStyleAccelerators(const std::string& label) {
- return ConvertAmperstandsTo(label, "");
-}
-
bool IsScreenComposited() {
GdkScreen* screen = gdk_screen_get_default();
return gdk_screen_is_composited(screen) == TRUE;
diff --git a/chrome/browser/gtk/gtk_util.h b/chrome/browser/gtk/gtk_util.h
index 3954729..7852493 100644
--- a/chrome/browser/gtk/gtk_util.h
+++ b/chrome/browser/gtk/gtk_util.h
@@ -141,9 +141,6 @@ GtkWidget* CenterWidgetInHBox(GtkWidget* hbox, GtkWidget* widget,
// accelerators. Windows uses & with && as an escape for &.)
std::string ConvertAcceleratorsFromWindowsStyle(const std::string& label);
-// Removes the "&" accelerators from a Windows label.
-std::string RemoveWindowsStyleAccelerators(const std::string& label);
-
// Returns true if the screen is composited, false otherwise.
bool IsScreenComposited();
diff --git a/chrome/browser/gtk/menu_gtk.cc b/chrome/browser/gtk/menu_gtk.cc
index 104b39f..6c24fd8 100644
--- a/chrome/browser/gtk/menu_gtk.cc
+++ b/chrome/browser/gtk/menu_gtk.cc
@@ -8,22 +8,17 @@
#include "app/l10n_util.h"
#include "app/menus/accelerator_gtk.h"
-#include "app/menus/button_menu_item_model.h"
#include "app/menus/menu_model.h"
-#include "app/resource_bundle.h"
#include "base/i18n/rtl.h"
#include "base/logging.h"
#include "base/message_loop.h"
#include "base/stl_util-inl.h"
#include "base/utf_string_conversions.h"
-#include "chrome/browser/gtk/gtk_custom_menu.h"
-#include "chrome/browser/gtk/gtk_custom_menu_item.h"
#include "chrome/browser/gtk/gtk_util.h"
#include "gfx/gtk_util.h"
#include "third_party/skia/include/core/SkBitmap.h"
using gtk_util::ConvertAcceleratorsFromWindowsStyle;
-using gtk_util::RemoveWindowsStyleAccelerators;
bool MenuGtk::block_activation_ = false;
@@ -104,7 +99,7 @@ MenuGtk::MenuGtk(MenuGtk::Delegate* delegate,
: delegate_(delegate),
model_(model),
dummy_accel_group_(gtk_accel_group_new()),
- menu_(gtk_custom_menu_new()),
+ menu_(gtk_menu_new()),
factory_(this) {
DCHECK(model);
g_object_ref_sink(menu_);
@@ -161,20 +156,15 @@ GtkWidget* MenuGtk::AppendSeparator() {
}
GtkWidget* MenuGtk::AppendMenuItem(int command_id, GtkWidget* menu_item) {
- return AppendMenuItemToMenu(command_id, menu_item, menu_, true);
+ return AppendMenuItemToMenu(command_id, menu_item, menu_);
}
GtkWidget* MenuGtk::AppendMenuItemToMenu(int command_id,
GtkWidget* menu_item,
- GtkWidget* menu,
- bool connect_to_activate) {
- // Native menu items do their own thing, so only selectively listen for the
- // activate signal.
- if (connect_to_activate) {
- SetMenuItemID(menu_item, command_id);
- g_signal_connect(menu_item, "activate",
- G_CALLBACK(OnMenuItemActivated), this);
- }
+ GtkWidget* menu) {
+ SetMenuItemID(menu_item, command_id);
+ g_signal_connect(menu_item, "activate",
+ G_CALLBACK(OnMenuItemActivated), this);
gtk_widget_show(menu_item);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
@@ -241,7 +231,6 @@ void MenuGtk::BuildSubmenuFromModel(menus::MenuModel* model, GtkWidget* menu) {
SkBitmap icon;
std::string label =
ConvertAcceleratorsFromWindowsStyle(UTF16ToUTF8(model->GetLabelAt(i)));
- bool connect_to_activate = true;
switch (model->GetTypeAt(i)) {
case menus::MenuModel::TYPE_SEPARATOR:
@@ -266,15 +255,6 @@ void MenuGtk::BuildSubmenuFromModel(menus::MenuModel* model, GtkWidget* menu) {
}
break;
}
- case menus::MenuModel::TYPE_BUTTON_ITEM: {
- menus::ButtonMenuItemModel* button_menu_item_model =
- model->GetButtonMenuItemAt(i);
-
- menu_item = BuildButtomMenuItem(button_menu_item_model);
-
- connect_to_activate = false;
- break;
- }
case menus::MenuModel::TYPE_SUBMENU:
case menus::MenuModel::TYPE_COMMAND:
if (model->GetIconAt(i, &icon))
@@ -305,7 +285,7 @@ void MenuGtk::BuildSubmenuFromModel(menus::MenuModel* model, GtkWidget* menu) {
g_object_set_data(G_OBJECT(menu_item), "model",
reinterpret_cast<void*>(model));
- AppendMenuItemToMenu(i, menu_item, menu, connect_to_activate);
+ AppendMenuItemToMenu(i, menu_item, menu);
if (model->IsLabelDynamicAt(i)) {
g_signal_connect(menu, "show", G_CALLBACK(OnSubmenuShow),
@@ -316,50 +296,6 @@ void MenuGtk::BuildSubmenuFromModel(menus::MenuModel* model, GtkWidget* menu) {
}
}
-GtkWidget* MenuGtk::BuildButtomMenuItem(menus::ButtonMenuItemModel* model) {
- GtkWidget* menu_item = gtk_custom_menu_item_new(
- RemoveWindowsStyleAccelerators(UTF16ToUTF8(model->label())).c_str());
- for (int i = 0; i < model->GetItemCount(); ++i) {
- switch (model->GetTypeAt(i)) {
- case menus::ButtonMenuItemModel::TYPE_SPACE: {
- gtk_custom_menu_item_add_space(GTK_CUSTOM_MENU_ITEM(menu_item));
- break;
- }
- case menus::ButtonMenuItemModel::TYPE_BUTTON: {
- GtkWidget* button = gtk_custom_menu_item_add_button(
- GTK_CUSTOM_MENU_ITEM(menu_item),
- model->GetCommandIdAt(i));
-
- int icon_idr;
- if (model->GetIconAt(i, &icon_idr)) {
- // TODO(erg): This should go through the GtkThemeProvider so we can
- // get a version tinted to label color.
- gtk_button_set_image(
- GTK_BUTTON(button),
- gtk_image_new_from_pixbuf(
- ResourceBundle::GetSharedInstance().
- GetPixbufNamed(icon_idr)));
- } else {
- gtk_button_set_label(
- GTK_BUTTON(button),
- RemoveWindowsStyleAccelerators(
- UTF16ToUTF8(model->GetLabelAt(i))).c_str());
- }
-
- // TODO(erg): Set up dynamic labels here.
- break;
- }
- }
- }
-
- // Set up the callback to the model for when it is clicked.
- g_object_set_data(G_OBJECT(menu_item), "button-model",
- reinterpret_cast<void*>(model));
- g_signal_connect(menu_item, "button-pushed",
- G_CALLBACK(OnMenuButtonPressed), this);
- return menu_item;
-}
-
// static
void MenuGtk::OnMenuItemActivated(GtkMenuItem* menuitem, MenuGtk* menu) {
if (block_activation_)
@@ -388,19 +324,6 @@ void MenuGtk::OnMenuItemActivated(GtkMenuItem* menuitem, MenuGtk* menu) {
menu->ExecuteCommand(model, id);
}
-void MenuGtk::OnMenuButtonPressed(GtkMenuItem* menu_item, int command_id,
- MenuGtk* menu) {
- menus::ButtonMenuItemModel* model =
- reinterpret_cast<menus::ButtonMenuItemModel*>(
- g_object_get_data(G_OBJECT(menu_item), "button-model"));
- if (model) {
- if (menu->delegate_)
- menu->delegate_->CommandWillBeExecuted();
-
- model->ActivatedCommand(command_id);
- }
-}
-
// static
void MenuGtk::WidgetMenuPositionFunc(GtkMenu* menu,
int* x,
diff --git a/chrome/browser/gtk/menu_gtk.h b/chrome/browser/gtk/menu_gtk.h
index a9a703a..0612d4c 100644
--- a/chrome/browser/gtk/menu_gtk.h
+++ b/chrome/browser/gtk/menu_gtk.h
@@ -16,7 +16,6 @@
class SkBitmap;
namespace menus {
-class ButtonMenuItemModel;
class MenuModel;
}
@@ -61,8 +60,7 @@ class MenuGtk {
GtkWidget* AppendMenuItem(int command_id, GtkWidget* menu_item);
GtkWidget* AppendMenuItemToMenu(int command_id,
GtkWidget* menu_item,
- GtkWidget* menu,
- bool connect_to_activate);
+ GtkWidget* menu);
// Displays the menu. |timestamp| is the time of activation. The popup is
// statically positioned at |widget|.
@@ -116,8 +114,6 @@ class MenuGtk {
void BuildMenuFromModel();
// Implementation of the above; called recursively.
void BuildSubmenuFromModel(menus::MenuModel* model, GtkWidget* menu);
- // Builds a menu item with buttons in it from the data in the model.
- GtkWidget* BuildButtomMenuItem(menus::ButtonMenuItemModel* model);
// Contains implementation for OnMenuShow.
void UpdateMenu();
@@ -127,10 +123,6 @@ class MenuGtk {
// Callback for when a menu item is clicked.
static void OnMenuItemActivated(GtkMenuItem* menuitem, MenuGtk* menu);
- // Called when one of the buttons are pressed.
- static void OnMenuButtonPressed(GtkMenuItem* menuitem, int command_id,
- MenuGtk* menu);
-
// Sets the check mark and enabled/disabled state on our menu items.
static void SetMenuItemInfo(GtkWidget* widget, void* raw_menu);
diff --git a/chrome/browser/gtk/notifications/notification_options_menu_model.cc b/chrome/browser/gtk/notifications/notification_options_menu_model.cc
index 9b5225a..0cbb81e 100644
--- a/chrome/browser/gtk/notifications/notification_options_menu_model.cc
+++ b/chrome/browser/gtk/notifications/notification_options_menu_model.cc
@@ -64,11 +64,6 @@ bool NotificationOptionsMenuModel::GetIconAt(int index, SkBitmap* icon) const {
return false;
}
-menus::ButtonMenuItemModel* NotificationOptionsMenuModel::GetButtonMenuItemAt(
- int index) const {
- return NULL;
-}
-
bool NotificationOptionsMenuModel::IsEnabledAt(int index) const {
return true;
}
diff --git a/chrome/browser/gtk/notifications/notification_options_menu_model.h b/chrome/browser/gtk/notifications/notification_options_menu_model.h
index a88adb7..f4b67f3 100644
--- a/chrome/browser/gtk/notifications/notification_options_menu_model.h
+++ b/chrome/browser/gtk/notifications/notification_options_menu_model.h
@@ -27,7 +27,6 @@ class NotificationOptionsMenuModel : public menus::MenuModel {
virtual bool IsItemCheckedAt(int index) const;
virtual int GetGroupIdAt(int index) const;
virtual bool GetIconAt(int index, SkBitmap* icon) const;
- virtual menus::ButtonMenuItemModel* GetButtonMenuItemAt(int index) const;
virtual bool IsEnabledAt(int index) const;
virtual MenuModel* GetSubmenuModelAt(int index) const;
virtual void HighlightChangedTo(int index);
diff --git a/chrome/browser/wrench_menu_model.cc b/chrome/browser/wrench_menu_model.cc
index df5d624..42bc6dc 100644
--- a/chrome/browser/wrench_menu_model.cc
+++ b/chrome/browser/wrench_menu_model.cc
@@ -5,26 +5,20 @@
#include "chrome/browser/wrench_menu_model.h"
#include <algorithm>
-#include <cmath>
#include "app/l10n_util.h"
-#include "app/menus/button_menu_item_model.h"
#include "app/resource_bundle.h"
#include "base/command_line.h"
#include "chrome/app/chrome_dll_resource.h"
#include "chrome/browser/browser.h"
-#include "chrome/browser/host_zoom_map.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/defaults.h"
#include "chrome/browser/page_menu_model.h"
#include "chrome/browser/profile.h"
#include "chrome/browser/sync/profile_sync_service.h"
#include "chrome/browser/sync/sync_ui_util.h"
-#include "chrome/browser/tab_contents/tab_contents.h"
#include "chrome/browser/upgrade_detector.h"
#include "chrome/common/chrome_switches.h"
-#include "chrome/common/notification_source.h"
-#include "chrome/common/notification_type.h"
#include "grit/chromium_strings.h"
#include "grit/generated_resources.h"
#include "grit/theme_resources.h"
@@ -67,13 +61,8 @@ void ToolsMenuModel::Build(Browser* browser) {
WrenchMenuModel::WrenchMenuModel(menus::SimpleMenuModel::Delegate* delegate,
Browser* browser)
: menus::SimpleMenuModel(delegate),
- delegate_(delegate),
browser_(browser) {
Build();
- UpdateZoomControls();
-
- registrar_.Add(this, NotificationType::ZOOM_LEVEL_CHANGED,
- Source<Profile>(browser_->profile()));
}
WrenchMenuModel::~WrenchMenuModel() {
@@ -132,59 +121,15 @@ bool WrenchMenuModel::GetIconAt(int index, SkBitmap* icon) const {
return false;
}
-bool WrenchMenuModel::IsLabelForCommandIdDynamic(int command_id) const {
- return false;
-}
-
-string16 WrenchMenuModel::GetLabelForCommandId(int command_id) const {
- // TODO(erg): Hook up percentage calculation once I add that widget.
- return string16();
-}
-
-void WrenchMenuModel::ExecuteCommand(int command_id) {
- if (delegate_)
- delegate_->ExecuteCommand(command_id);
-}
-
-void WrenchMenuModel::Observe(NotificationType type,
- const NotificationSource& source,
- const NotificationDetails& details) {
- DCHECK_EQ(NotificationType::ZOOM_LEVEL_CHANGED, type.value);
- UpdateZoomControls();
-}
-
void WrenchMenuModel::Build() {
AddItemWithStringId(IDC_NEW_TAB, IDS_NEW_TAB);
AddItemWithStringId(IDC_NEW_WINDOW, IDS_NEW_WINDOW);
AddItemWithStringId(IDC_NEW_INCOGNITO_WINDOW, IDS_NEW_INCOGNITO_WINDOW);
AddSeparator();
-#if defined(OS_LINUX)
- edit_menu_item_model_.reset(new menus::ButtonMenuItemModel(IDS_EDIT, this));
- edit_menu_item_model_->AddItemWithStringId(IDC_CUT, IDS_CUT);
- edit_menu_item_model_->AddItemWithStringId(IDC_COPY, IDS_COPY);
- edit_menu_item_model_->AddItemWithStringId(IDC_PASTE, IDS_PASTE);
- AddButtonItem(0, edit_menu_item_model_.get());
-#else
- // TODO(port): Move to the above.
CreateCutCopyPaste();
-#endif
-
AddSeparator();
-#if defined(OS_LINUX)
- zoom_menu_item_model_.reset(
- new menus::ButtonMenuItemModel(IDS_ZOOM_MENU, this));
- zoom_menu_item_model_->AddItemWithStringId(IDC_ZOOM_PLUS, IDS_ZOOM_PLUS2);
- zoom_menu_item_model_->AddItemWithStringId(IDC_ZOOM_MINUS, IDS_ZOOM_MINUS2);
- zoom_menu_item_model_->AddSpace();
- zoom_menu_item_model_->AddItemWithImage(
- IDC_FULLSCREEN, IDR_FULLSCREEN_MENU_BUTTON);
- AddButtonItem(0, zoom_menu_item_model_.get());
-#else
- // TODO(port): Move to the above.
CreateZoomFullscreen();
-#endif
-
AddSeparator();
AddItemWithStringId(IDC_SAVE_PAGE, IDS_SAVE_PAGE);
AddItemWithStringId(IDC_FIND, IDS_FIND);
@@ -239,37 +184,6 @@ void WrenchMenuModel::CreateZoomFullscreen() {
AddItemWithStringId(IDC_FULLSCREEN, IDS_FULLSCREEN);
}
-void WrenchMenuModel::UpdateZoomControls() {
- bool enable_increment, enable_decrement;
- int zoom_percent =
- static_cast<int>(GetZoom(&enable_increment, &enable_decrement) * 100);
-
- // TODO(erg): Route the stringified zoom_percent through
- // GetLabelForCommandId(). Also make a way to use enable_increment/decrement.
- zoom_label_ = l10n_util::GetStringFUTF16(
- IDS_ZOOM_PERCENT, IntToString16(zoom_percent));
-}
-
-double WrenchMenuModel::GetZoom(bool* enable_increment,
- bool* enable_decrement) {
- TabContents* selected_tab = browser_->GetSelectedTabContents();
- *enable_decrement = *enable_increment = false;
- if (!selected_tab)
- return 1;
-
- HostZoomMap* zoom_map = selected_tab->profile()->GetHostZoomMap();
- if (!zoom_map)
- return 1;
-
- // This code comes from WebViewImpl::setZoomLevel.
- int zoom_level = zoom_map->GetZoomLevel(selected_tab->GetURL());
- double value = static_cast<double>(
- std::max(std::min(std::pow(1.2, zoom_level), 3.0), .5));
- *enable_decrement = (value != .5);
- *enable_increment = (value != 3.0);
- return value;
-}
-
string16 WrenchMenuModel::GetSyncMenuLabel() const {
return sync_ui_util::GetSyncMenuLabel(
browser_->profile()->GetOriginalProfile()->GetProfileSyncService());
diff --git a/chrome/browser/wrench_menu_model.h b/chrome/browser/wrench_menu_model.h
index 5b7d2d5..f86a170 100644
--- a/chrome/browser/wrench_menu_model.h
+++ b/chrome/browser/wrench_menu_model.h
@@ -11,19 +11,14 @@
#include "app/menus/simple_menu_model.h"
#include "base/ref_counted.h"
#include "base/scoped_ptr.h"
-#include "chrome/common/notification_observer.h"
-#include "chrome/common/notification_registrar.h"
class Browser;
class EncodingMenuModel;
-namespace menus {
-class ButtonMenuItemModel;
-} // namespace menus
-
class ToolsMenuModel : public menus::SimpleMenuModel {
public:
- ToolsMenuModel(menus::SimpleMenuModel::Delegate* delegate, Browser* browser);
+ explicit ToolsMenuModel(menus::SimpleMenuModel::Delegate* delegate,
+ Browser* browser);
virtual ~ToolsMenuModel();
private:
@@ -35,12 +30,10 @@ class ToolsMenuModel : public menus::SimpleMenuModel {
};
// A menu model that builds the contents of the wrench menu.
-class WrenchMenuModel : public menus::SimpleMenuModel,
- public menus::ButtonMenuItemModel::Delegate,
- public NotificationObserver {
+class WrenchMenuModel : public menus::SimpleMenuModel {
public:
- WrenchMenuModel(menus::SimpleMenuModel::Delegate* delegate,
- Browser* browser);
+ explicit WrenchMenuModel(menus::SimpleMenuModel::Delegate* delegate,
+ Browser* browser);
virtual ~WrenchMenuModel();
// Returns true if the WrenchMenuModel is enabled.
@@ -52,48 +45,27 @@ class WrenchMenuModel : public menus::SimpleMenuModel,
virtual bool HasIcons() const { return true; }
virtual bool GetIconAt(int index, SkBitmap* icon) const;
- // Overridden from menus::ButtonMenuItemModel::Delegate:
- virtual bool IsLabelForCommandIdDynamic(int command_id) const;
- virtual string16 GetLabelForCommandId(int command_id) const;
- virtual void ExecuteCommand(int command_id);
+ protected:
+ // Adds the cut/copy/paste items to the menu. The default implementation adds
+ // three real menu items, while platform specific subclasses add their own
+ // native monstrosities.
+ virtual void CreateCutCopyPaste();
- // Overridden from NotificationObserver:
- virtual void Observe(NotificationType type,
- const NotificationSource& source,
- const NotificationDetails& details);
+ // Adds the zoom/fullscreen items to the menu. Like CreateCutCopyPaste().
+ virtual void CreateZoomFullscreen();
private:
void Build();
- // Adds custom items to the menu. Deprecated in favor of a cross platform
- // model for button items.
- void CreateCutCopyPaste();
- void CreateZoomFullscreen();
-
- // Calculates |zoom_label_| in response to a zoom change.
- void UpdateZoomControls();
- double GetZoom(bool* enable_increment, bool* enable_decrement);
-
string16 GetSyncMenuLabel() const;
string16 GetAboutEntryMenuLabel() const;
bool IsDynamicItem(int index) const;
- // Models for the special menu items with buttons.
- scoped_ptr<menus::ButtonMenuItemModel> edit_menu_item_model_;
- scoped_ptr<menus::ButtonMenuItemModel> zoom_menu_item_model_;
-
- // Label of the zoom label in the zoom menu item.
- string16 zoom_label_;
-
// Tools menu.
scoped_ptr<ToolsMenuModel> tools_menu_model_;
- menus::SimpleMenuModel::Delegate* delegate_; // weak
-
Browser* browser_; // weak
- NotificationRegistrar registrar_;
-
DISALLOW_COPY_AND_ASSIGN(WrenchMenuModel);
};
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index da8f86b..c32d6d1 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -1395,10 +1395,6 @@
'browser/gtk/gtk_chrome_link_button.h',
'browser/gtk/gtk_chrome_shrinkable_hbox.cc',
'browser/gtk/gtk_chrome_shrinkable_hbox.h',
- 'browser/gtk/gtk_custom_menu.cc',
- 'browser/gtk/gtk_custom_menu.h',
- 'browser/gtk/gtk_custom_menu_item.cc',
- 'browser/gtk/gtk_custom_menu_item.h',
'browser/gtk/gtk_expanded_container.cc',
'browser/gtk/gtk_expanded_container.h',
'browser/gtk/gtk_floating_container.cc',
@@ -3283,10 +3279,6 @@
['include', '^browser/gtk/gtk_chrome_button.h'],
['include', '^browser/gtk/gtk_chrome_link_button.cc'],
['include', '^browser/gtk/gtk_chrome_link_button.h'],
- ['include', '^browser/gtk/gtk_custom_menu.cc'],
- ['include', '^browser/gtk/gtk_custom_menu.h'],
- ['include', '^browser/gtk/gtk_custom_menu_item.cc'],
- ['include', '^browser/gtk/gtk_custom_menu_item.h'],
['include', '^browser/gtk/gtk_theme_provider.cc'],
['include', '^browser/gtk/gtk_theme_provider.h'],
['include', '^browser/gtk/gtk_tree.cc'],