From 371af7c5cb85239f81cdb0041074e7a1ec8a5620 Mon Sep 17 00:00:00 2001 From: "chocobo@google.com" Date: Wed, 23 Sep 2009 19:21:43 +0000 Subject: Add icon support to gtk menu items. BUG=none TEST=none Review URL: http://codereview.chromium.org/227005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@26958 0039d316-1c4b-4281-b951-d872f2087c98 --- views/controls/menu/native_menu_gtk.cc | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'views') diff --git a/views/controls/menu/native_menu_gtk.cc b/views/controls/menu/native_menu_gtk.cc index b0d8065..55e10ae 100644 --- a/views/controls/menu/native_menu_gtk.cc +++ b/views/controls/menu/native_menu_gtk.cc @@ -4,8 +4,12 @@ #include "views/controls/menu/native_menu_gtk.h" +#include + +#include "base/gfx/gtk_util.h" #include "base/string_util.h" #include "base/time.h" +#include "third_party/skia/include/core/SkBitmap.h" #include "views/accelerator.h" #include "views/controls/menu/menu_2.h" @@ -131,16 +135,24 @@ void NativeMenuGtk::AddMenuItemAt(int index, } break; case Menu2Model::TYPE_SUBMENU: - case Menu2Model::TYPE_COMMAND: - menu_item = gtk_menu_item_new_with_mnemonic(label.c_str()); + case Menu2Model::TYPE_COMMAND: { + SkBitmap icon; + // Create menu item with icon if icon exists. + if (model_->HasIcons() && model_->GetIconAt(index, &icon)) { + menu_item = gtk_image_menu_item_new_with_mnemonic(label.c_str()); + GdkPixbuf* pixbuf = gfx::GdkPixbufFromSkBitmap(&icon); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item), + gtk_image_new_from_pixbuf(pixbuf)); + } else { + menu_item = gtk_menu_item_new_with_mnemonic(label.c_str()); + } break; + } default: NOTREACHED(); break; } - // TODO(beng): icons - if (type == Menu2Model::TYPE_SUBMENU) { // TODO(beng): we're leaking these objects right now... consider some other // arrangement. -- cgit v1.1