diff options
author | chocobo@google.com <chocobo@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-23 19:21:43 +0000 |
---|---|---|
committer | chocobo@google.com <chocobo@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-23 19:21:43 +0000 |
commit | 371af7c5cb85239f81cdb0041074e7a1ec8a5620 (patch) | |
tree | 63351e11efb09a44678236c005b3b475a381fdf4 /views | |
parent | fdf3cff0b9c29d8646b1d05cab64c5f38048181c (diff) | |
download | chromium_src-371af7c5cb85239f81cdb0041074e7a1ec8a5620.zip chromium_src-371af7c5cb85239f81cdb0041074e7a1ec8a5620.tar.gz chromium_src-371af7c5cb85239f81cdb0041074e7a1ec8a5620.tar.bz2 |
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
Diffstat (limited to 'views')
-rw-r--r-- | views/controls/menu/native_menu_gtk.cc | 20 |
1 files changed, 16 insertions, 4 deletions
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 <string> + +#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. |