From 37f858dbc0411f0b69f9a524ae6f4d89d3bc886b Mon Sep 17 00:00:00 2001 From: "atwilson@chromium.org" <atwilson@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> Date: Tue, 28 Dec 2010 17:45:56 +0000 Subject: [PATCH] Update menu icons for dynamic items when we update the label. BUG=66508 TEST=enable background mode, see wrench menu badge toggle when extensions load Review URL: http://codereview.chromium.org/6014009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70228 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/gtk/menu_gtk.cc | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/chrome/browser/gtk/menu_gtk.cc b/chrome/browser/gtk/menu_gtk.cc index 04450efdcd3dd..52b9c12ba1f2a 100644 --- a/chrome/browser/gtk/menu_gtk.cc +++ b/chrome/browser/gtk/menu_gtk.cc @@ -803,7 +803,6 @@ void MenuGtk::SetMenuItemInfo(GtkWidget* widget, gpointer userdata) { if (model->IsVisibleAt(id)) { // Update the menu item label if it is dynamic. - // TODO(atwilson): Update the icon as well (http://crbug.com/66508). if (model->IsItemDynamicAt(id)) { std::string label = gfx::ConvertAcceleratorsFromWindowsStyle( @@ -814,6 +813,17 @@ void MenuGtk::SetMenuItemInfo(GtkWidget* widget, gpointer userdata) { #else gtk_label_set_label(GTK_LABEL(GTK_BIN(widget)->child), label.c_str()); #endif + if (GTK_IS_IMAGE_MENU_ITEM(widget)) { + SkBitmap icon; + if (model->GetIconAt(id, &icon)) { + GdkPixbuf* pixbuf = gfx::GdkPixbufFromSkBitmap(&icon); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(widget), + gtk_image_new_from_pixbuf(pixbuf)); + g_object_unref(pixbuf); + } else { + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(widget), NULL); + } + } } gtk_widget_show(widget); -- GitLab