| Index: chrome/browser/gtk/gtk_custom_menu_item.cc
|
| diff --git a/chrome/browser/gtk/gtk_custom_menu_item.cc b/chrome/browser/gtk/gtk_custom_menu_item.cc
|
| index 8c9c923b6311767f4f4d967b9fbc0666329b98d1..febf8bc5b592af324fd1295b7e636cb25c0736ae 100644
|
| --- a/chrome/browser/gtk/gtk_custom_menu_item.cc
|
| +++ b/chrome/browser/gtk/gtk_custom_menu_item.cc
|
| @@ -19,12 +19,20 @@ 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)
|
| + if (item->currently_selected_button) {
|
| gtk_widget_set_state(item->currently_selected_button, GTK_STATE_NORMAL);
|
| + gtk_widget_set_state(
|
| + gtk_bin_get_child(GTK_BIN(item->currently_selected_button)),
|
| + GTK_STATE_NORMAL);
|
| + }
|
|
|
| item->currently_selected_button = selected;
|
| - if (item->currently_selected_button)
|
| + if (item->currently_selected_button) {
|
| gtk_widget_set_state(item->currently_selected_button, GTK_STATE_SELECTED);
|
| + gtk_widget_set_state(
|
| + gtk_bin_get_child(GTK_BIN(item->currently_selected_button)),
|
| + GTK_STATE_PRELIGHT);
|
| + }
|
| }
|
| }
|
|
|
| @@ -49,27 +57,6 @@ 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->all_widgets = NULL;
|
| item->button_widgets = NULL;
|
| @@ -86,9 +73,6 @@ static void gtk_custom_menu_item_init(GtkCustomMenuItem* item) {
|
| 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);
|
| -
|
| g_signal_connect(item->hbox, "expose-event",
|
| G_CALLBACK(gtk_custom_menu_item_hbox_expose),
|
| item);
|
| @@ -309,7 +293,8 @@ GtkWidget* gtk_custom_menu_item_add_button_label(GtkCustomMenuItem* menu_item,
|
| 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);
|
| - g_signal_connect(button, "notify", G_CALLBACK(on_button_label_set), NULL);
|
| + g_signal_connect(button, "notify::label",
|
| + G_CALLBACK(on_button_label_set), NULL);
|
| gtk_widget_show(button);
|
|
|
| menu_item->all_widgets = g_list_append(menu_item->all_widgets, button);
|
|
|