Index: chrome/browser/gtk/menu_gtk.cc |
=================================================================== |
--- chrome/browser/gtk/menu_gtk.cc (revision 54011) |
+++ chrome/browser/gtk/menu_gtk.cc (working copy) |
@@ -80,26 +80,27 @@ |
int index = GPOINTER_TO_INT(g_object_get_data( |
G_OBJECT(button), "button-model-id")); |
- std::string label = |
- ConvertAcceleratorsFromWindowsStyle( |
- UTF16ToUTF8(model->GetLabelAt(index))); |
- gtk_button_set_label(GTK_BUTTON(button), label.c_str()); |
-} |
- |
-void SetupDynamicLabelMenuButton(GtkWidget* button, |
- GtkWidget* menu, |
- menus::ButtonMenuItemModel* model, |
- int index) { |
if (model->IsLabelDynamicAt(index)) { |
- g_object_set_data(G_OBJECT(button), "button-model", |
- model); |
- g_object_set_data(G_OBJECT(button), "button-model-id", |
- GINT_TO_POINTER(index)); |
- g_signal_connect(menu, "show", G_CALLBACK(OnSubmenuShowButtonMenuItem), |
- button); |
+ std::string label = |
+ ConvertAcceleratorsFromWindowsStyle( |
+ UTF16ToUTF8(model->GetLabelAt(index))); |
+ gtk_button_set_label(GTK_BUTTON(button), label.c_str()); |
} |
+ gtk_widget_set_sensitive(GTK_WIDGET(button), model->IsEnabledAt(index)); |
} |
+void SetupButtonShowHandler(GtkWidget* button, |
+ GtkWidget* menu, |
+ menus::ButtonMenuItemModel* model, |
+ int index) { |
+ g_object_set_data(G_OBJECT(button), "button-model", |
+ model); |
+ g_object_set_data(G_OBJECT(button), "button-model-id", |
+ GINT_TO_POINTER(index)); |
+ g_signal_connect(menu, "show", G_CALLBACK(OnSubmenuShowButtonMenuItem), |
+ button); |
+} |
+ |
void OnSubmenuShowButtonImage(GtkWidget* widget, GtkButton* button) { |
MenuGtk::Delegate* delegate = reinterpret_cast<MenuGtk::Delegate*>( |
g_object_get_data(G_OBJECT(button), "menu-gtk-delegate")); |
@@ -401,7 +402,7 @@ |
UTF16ToUTF8(model->GetLabelAt(i))).c_str()); |
} |
- SetupDynamicLabelMenuButton(button, menu, model, i); |
+ SetupButtonShowHandler(button, menu, model, i); |
break; |
} |
case menus::ButtonMenuItemModel::TYPE_BUTTON_LABEL: { |
@@ -412,7 +413,7 @@ |
GTK_BUTTON(button), |
RemoveWindowsStyleAccelerators( |
UTF16ToUTF8(model->GetLabelAt(i))).c_str()); |
- SetupDynamicLabelMenuButton(button, menu, model, i); |
+ SetupButtonShowHandler(button, menu, model, i); |
break; |
} |
} |
@@ -465,7 +466,7 @@ |
menus::ButtonMenuItemModel* model = |
reinterpret_cast<menus::ButtonMenuItemModel*>( |
g_object_get_data(G_OBJECT(menu_item), "button-model")); |
- if (model) { |
+ if (model && model->IsCommandIdEnabled(command_id)) { |
if (menu->delegate_) |
menu->delegate_->CommandWillBeExecuted(); |