summaryrefslogtreecommitdiffstats
path: root/src/ink-action.cpp
diff options
context:
space:
mode:
authorJon A. Cruz <jon@joncruz.org>2007-04-11 18:25:18 +0000
committerjoncruz <joncruz@users.sourceforge.net>2007-04-11 18:25:18 +0000
commitda97091142da4590cb6649ec21f0c9f6290a4105 (patch)
tree4ab1683e935e9ce26f24b042f48da2de07834df4 /src/ink-action.cpp
parentfix about dialog a bit (diff)
downloadinkscape-da97091142da4590cb6649ec21f0c9f6290a4105.tar.gz
inkscape-da97091142da4590cb6649ec21f0c9f6290a4105.zip
Adding icons to pop-up toolbar menus
(bzr r2861)
Diffstat (limited to 'src/ink-action.cpp')
-rw-r--r--src/ink-action.cpp31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/ink-action.cpp b/src/ink-action.cpp
index 6f7ea76e3..138adafd1 100644
--- a/src/ink-action.cpp
+++ b/src/ink-action.cpp
@@ -6,6 +6,7 @@
#include <gtk/gtktoolitem.h>
#include <gtk/gtktoggletoolbutton.h>
#include <gtk/gtkcheckmenuitem.h>
+#include <gtk/gtkimagemenuitem.h>
#include "icon-size.h"
#include "ink-action.h"
@@ -182,9 +183,37 @@ void ink_action_set_property( GObject* obj, guint propId, const GValue *value, G
}
}
+#include <gtk/gtkstock.h>
+
static GtkWidget* ink_action_create_menu_item( GtkAction* action )
{
- GtkWidget* item = gInkActionParentClass->create_menu_item( action );
+ InkAction* act = INK_ACTION( action );
+ GtkWidget* item = 0;
+
+ if ( act->private_data->iconId ) {
+ gchar* label = 0;
+ g_object_get( G_OBJECT(act), "label", &label, NULL );
+
+ item = gtk_image_menu_item_new_with_mnemonic( label );
+ GtkWidget* child = sp_icon_new( Inkscape::ICON_SIZE_MENU, act->private_data->iconId );
+ // TODO this work-around is until SPIcon will live properly inside of a popup menu
+ if ( SP_IS_ICON(child) ) {
+ SPIcon* icon = SP_ICON(child);
+ sp_icon_fetch_pixbuf( icon );
+ GdkPixbuf* target = gtk_action_is_sensitive(action) ? icon->pb : icon->pb_faded;
+ if ( target ) {
+ child = gtk_image_new_from_pixbuf( target );
+ gtk_widget_destroy( GTK_WIDGET(icon) );
+ }
+ }
+ gtk_widget_show_all( child );
+ gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM(item), child );
+
+ g_free( label );
+ label = 0;
+ } else {
+ item = gInkActionParentClass->create_menu_item( action );
+ }
return item;
}