Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(430)

Side by Side Diff: chrome/browser/gtk/menu_gtk.cc

Issue 5697005: Change SimpleMenuModel on OSX to support dynamic icons (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update after merge Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/gtk/menu_gtk.h" 5 #include "chrome/browser/gtk/menu_gtk.h"
6 6
7 #include <map> 7 #include <map>
8 8
9 #include "app/menus/accelerator_gtk.h" 9 #include "app/menus/accelerator_gtk.h"
10 #include "app/menus/button_menu_item_model.h" 10 #include "app/menus/button_menu_item_model.h"
(...skipping 726 matching lines...) Expand 10 before | Expand all | Expand 10 after
737 } 737 }
738 738
739 // static 739 // static
740 void MenuGtk::SetButtonItemInfo(GtkWidget* button, gpointer userdata) { 740 void MenuGtk::SetButtonItemInfo(GtkWidget* button, gpointer userdata) {
741 menus::ButtonMenuItemModel* model = 741 menus::ButtonMenuItemModel* model =
742 reinterpret_cast<menus::ButtonMenuItemModel*>( 742 reinterpret_cast<menus::ButtonMenuItemModel*>(
743 g_object_get_data(G_OBJECT(button), "button-model")); 743 g_object_get_data(G_OBJECT(button), "button-model"));
744 int index = GPOINTER_TO_INT(g_object_get_data( 744 int index = GPOINTER_TO_INT(g_object_get_data(
745 G_OBJECT(button), "button-model-id")); 745 G_OBJECT(button), "button-model-id"));
746 746
747 if (model->IsLabelDynamicAt(index)) { 747 if (model->IsItemDynamicAt(index)) {
748 std::string label = 748 std::string label =
749 gfx::ConvertAcceleratorsFromWindowsStyle( 749 gfx::ConvertAcceleratorsFromWindowsStyle(
750 UTF16ToUTF8(model->GetLabelAt(index))); 750 UTF16ToUTF8(model->GetLabelAt(index)));
751 gtk_button_set_label(GTK_BUTTON(button), label.c_str()); 751 gtk_button_set_label(GTK_BUTTON(button), label.c_str());
752 } 752 }
753 753
754 gtk_widget_set_sensitive(GTK_WIDGET(button), model->IsEnabledAt(index)); 754 gtk_widget_set_sensitive(GTK_WIDGET(button), model->IsEnabledAt(index));
755 } 755 }
756 756
757 // static 757 // static
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
796 gtk_custom_menu_item_foreach_button(GTK_CUSTOM_MENU_ITEM(widget), 796 gtk_custom_menu_item_foreach_button(GTK_CUSTOM_MENU_ITEM(widget),
797 SetButtonItemInfo, 797 SetButtonItemInfo,
798 userdata); 798 userdata);
799 } 799 }
800 800
801 if (GTK_IS_MENU_ITEM(widget)) { 801 if (GTK_IS_MENU_ITEM(widget)) {
802 gtk_widget_set_sensitive(widget, model->IsEnabledAt(id)); 802 gtk_widget_set_sensitive(widget, model->IsEnabledAt(id));
803 803
804 if (model->IsVisibleAt(id)) { 804 if (model->IsVisibleAt(id)) {
805 // Update the menu item label if it is dynamic. 805 // Update the menu item label if it is dynamic.
806 if (model->IsLabelDynamicAt(id)) { 806 // TODO(atwilson): Update the icon as well (http://crbug.com/66508).
807 if (model->IsItemDynamicAt(id)) {
807 std::string label = 808 std::string label =
808 gfx::ConvertAcceleratorsFromWindowsStyle( 809 gfx::ConvertAcceleratorsFromWindowsStyle(
809 UTF16ToUTF8(model->GetLabelAt(id))); 810 UTF16ToUTF8(model->GetLabelAt(id)));
810 811
811 #if GTK_CHECK_VERSION(2, 16, 0) 812 #if GTK_CHECK_VERSION(2, 16, 0)
812 gtk_menu_item_set_label(GTK_MENU_ITEM(widget), label.c_str()); 813 gtk_menu_item_set_label(GTK_MENU_ITEM(widget), label.c_str());
813 #else 814 #else
814 gtk_label_set_label(GTK_LABEL(GTK_BIN(widget)->child), label.c_str()); 815 gtk_label_set_label(GTK_LABEL(GTK_BIN(widget)->child), label.c_str());
815 #endif 816 #endif
816 } 817 }
817 818
818 gtk_widget_show(widget); 819 gtk_widget_show(widget);
819 } else { 820 } else {
820 gtk_widget_hide(widget); 821 gtk_widget_hide(widget);
821 } 822 }
822 823
823 GtkWidget* submenu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(widget)); 824 GtkWidget* submenu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(widget));
824 if (submenu) { 825 if (submenu) {
825 gtk_container_foreach(GTK_CONTAINER(submenu), &SetMenuItemInfo, 826 gtk_container_foreach(GTK_CONTAINER(submenu), &SetMenuItemInfo,
826 userdata); 827 userdata);
827 } 828 }
828 } 829 }
829 } 830 }
OLDNEW
« no previous file with comments | « chrome/browser/download/download_shelf.cc ('k') | chrome/browser/notifications/notification_options_menu_model.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698