diff options
| author | Jon A. Cruz <jon@joncruz.org> | 2007-04-11 18:25:18 +0000 |
|---|---|---|
| committer | joncruz <joncruz@users.sourceforge.net> | 2007-04-11 18:25:18 +0000 |
| commit | da97091142da4590cb6649ec21f0c9f6290a4105 (patch) | |
| tree | 4ab1683e935e9ce26f24b042f48da2de07834df4 /src/ink-action.cpp | |
| parent | fix about dialog a bit (diff) | |
| download | inkscape-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.cpp | 31 |
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; } |
