summaryrefslogtreecommitdiffstats
path: root/views
diff options
context:
space:
mode:
authorchocobo@google.com <chocobo@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-23 19:21:43 +0000
committerchocobo@google.com <chocobo@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-23 19:21:43 +0000
commit371af7c5cb85239f81cdb0041074e7a1ec8a5620 (patch)
tree63351e11efb09a44678236c005b3b475a381fdf4 /views
parentfdf3cff0b9c29d8646b1d05cab64c5f38048181c (diff)
downloadchromium_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.cc20
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.