aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2010-01-11 11:32:10 -0600
committerTed Gould <ted@gould.cx>2010-01-11 11:32:10 -0600
commita9e8173a206f81967c099c2985253939f7445978 (patch)
tree0f6eacd5353478f0919ac3155deb089bab85631d
parent011c5282901f61042a7b2b783470c048116f3a74 (diff)
downloadlibdbusmenu-a9e8173a206f81967c099c2985253939f7445978.tar.gz
libdbusmenu-a9e8173a206f81967c099c2985253939f7445978.tar.bz2
libdbusmenu-a9e8173a206f81967c099c2985253939f7445978.zip
Adding in a check to see if there is a 'ltr' icon, and use it if so.
-rw-r--r--libdbusmenu-gtk/client.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/libdbusmenu-gtk/client.c b/libdbusmenu-gtk/client.c
index 4a8637a..319083c 100644
--- a/libdbusmenu-gtk/client.c
+++ b/libdbusmenu-gtk/client.c
@@ -511,13 +511,30 @@ image_property_handle (DbusmenuMenuitem * item, const gchar * property, const GV
icon either. */
gtkimage = NULL;
} else {
+ /* Look to see if we want to have an icon with the 'ltr' or
+ 'rtl' depending on what we're doing. */
+ gchar * finaliconname = g_strdup_printf("%s-%s", iconname, "ltr");
+ if (!gtk_icon_theme_has_icon(gtk_icon_theme_get_default(), finaliconname)) {
+ /* If we don't have that icon, fall back to having one
+ without the extra bits. */
+ g_free(finaliconname);
+ finaliconname = (gchar *)iconname; /* Dropping const not
+ becaue we don't love it. */
+ }
+
/* If we don't have an image, we need to build
one so that we can set the name. Otherwise we
can just convert it to this name. */
if (gtkimage == NULL) {
- gtkimage = gtk_image_new_from_icon_name(iconname, GTK_ICON_SIZE_MENU);
+ gtkimage = gtk_image_new_from_icon_name(finaliconname, GTK_ICON_SIZE_MENU);
} else {
- gtk_image_set_from_icon_name(GTK_IMAGE(gtkimage), iconname, GTK_ICON_SIZE_MENU);
+ gtk_image_set_from_icon_name(GTK_IMAGE(gtkimage), finaliconname, GTK_ICON_SIZE_MENU);
+ }
+
+ /* If we're using the name with extra bits, then we need
+ to free that string. */
+ if (finaliconname != iconname) {
+ g_free(finaliconname);
}
}
} else {