[Xfce4-commits] <libxfcegui4:xfce-4.6> WIP: fix icon sizing for XfceAppMenuItem
Brian J. Tarricone
brian at tarricone.org
Thu Aug 13 22:54:02 CEST 2009
Updating branch refs/heads/xfce-4.6
to ca9cdfe40227adb1b690e57c81a22c99487195cb (commit)
from c6c416386610b2819ee24d62b7f1c34a1a40e6eb (commit)
commit ca9cdfe40227adb1b690e57c81a22c99487195cb
Author: Brian J. Tarricone <brian at tarricone.org>
Date: Thu Aug 13 13:51:50 2009 -0700
WIP: fix icon sizing for XfceAppMenuItem
libxfcegui4/xfce-appmenuitem.c | 61 +++++++++++++++++++++++++++++----------
1 files changed, 45 insertions(+), 16 deletions(-)
diff --git a/libxfcegui4/xfce-appmenuitem.c b/libxfcegui4/xfce-appmenuitem.c
index ffef48f..b72d30d 100644
--- a/libxfcegui4/xfce-appmenuitem.c
+++ b/libxfcegui4/xfce-appmenuitem.c
@@ -414,6 +414,38 @@ xfce_app_menu_item_finalize(GObject *object)
G_OBJECT_CLASS(xfce_app_menu_item_parent_class)->finalize(object);
}
+static void
+xfce_app_menu_item_update_icon(XfceAppMenuItem *app_menu_item)
+{
+ if(!GTK_WIDGET_REALIZED(app_menu_item))
+ return;
+
+ if(app_menu_item->priv->icon_name)
+ gtk_image_set_from_icon_name(GTK_IMAGE(img), app_menu_item->priv->icon_name);
+ else if(app_menu_item->priv->icon_path) {
+ GtkIconTheme *itheme = gtk_icon_theme_get_default();
+ GdkPixbuf *pix = gtk_icon_theme_load_icon(itheme, app_menu_item->priv->icon_path, 0, NULL);
+ if(pix) {
+ GtkWidget *img = gtk_image_menu_item_get_image(GTK_IMAGE_MENU_ITEM(app_menu_item));
+
+ if(!img) {
+ img = gtk_image_new();
+ gtk_widget_show(img);
+ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(app_menu_item), img);
+ }
+
+ gtk_image_set_from_pixbuf(GTK_IMAGE(img), pix);
+ g_object_unref(G_OBJECT(pix));
+ }
+ } else {
+ GtkWidget *img = gtk_image_menu_item_get_image(GTK_IMAGE_MENU_ITEM(app_menu_item));
+ if(img) {
+ gtk_image_set_from_icon_name(GTK_IMAGE(img), NULL);
+ gtk_image_set_from_pixbuf(GTK_IMAGE(img), NULL);
+ }
+ }
+}
+
/**
* xfce_app_menu_item_new:
* @returns: A new #XfceAppMenuItem.
@@ -686,25 +718,19 @@ void
xfce_app_menu_item_set_icon_name(XfceAppMenuItem *app_menu_item,
const gchar *filename)
{
- GtkWidget *img;
-
g_return_if_fail(XFCE_IS_APP_MENU_ITEM(app_menu_item));
- if(app_menu_item->priv->icon_name)
- g_free(app_menu_item->priv->icon_name);
+ g_free(app_menu_item->priv->icon_name);
+ app_menu_item->priv->icon_name = NULL;
+ g_free(app_menu_item->priv->icon_path);
+ app_menu_item->priv->icon_path = NULL;
- if(!filename) {
- app_menu_item->priv->icon_name = NULL;
- return;
- }
+ if(!strstr(filename, G_DIR_SEPARATOR_S))
+ app_menu_item->priv->icon_name = g_strdup(filename);
+ else
+ app_menu_item->priv->icon_path = g_strdup(filename);
- app_menu_item->priv->icon_name = g_strdup(filename);
- app_menu_item->priv->icon_path = xfce_themed_icon_lookup(filename,
- _xfce_app_menu_item_icon_size);
-
- img = gtk_image_menu_item_get_image(GTK_IMAGE_MENU_ITEM(app_menu_item));
- if(img)
- gtk_image_set_from_pixbuf(GTK_IMAGE(img), NULL);
+ xfce_app_menu_item_update_icon(app_menu_item);
}
/**
@@ -797,7 +823,10 @@ xfce_app_menu_item_get_icon_name(XfceAppMenuItem *app_menu_item)
{
g_return_val_if_fail(XFCE_IS_APP_MENU_ITEM(app_menu_item), NULL);
- return app_menu_item->priv->icon_name;
+ if(app_menu_item->priv->icon_name)
+ return app_menu_item->priv->icon_name;
+ else
+ return app_menu_item->priv->icon_path;
}
/**
More information about the Xfce4-commits
mailing list