aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libdbusmenu-glib/menuitem.h2
-rw-r--r--libdbusmenu-gtk/client.c16
-rw-r--r--tests/test-gtk-label.json4
3 files changed, 19 insertions, 3 deletions
diff --git a/libdbusmenu-glib/menuitem.h b/libdbusmenu-glib/menuitem.h
index 1382335..04fd911 100644
--- a/libdbusmenu-glib/menuitem.h
+++ b/libdbusmenu-glib/menuitem.h
@@ -66,6 +66,8 @@ G_BEGIN_DECLS
#define DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED 1
#define DBUSMENU_MENUITEM_TOGGLE_STATE_UNKNOWN -1
+#define DBUSMENU_MENUITEM_ICON_NAME_BLANK "blank-icon"
+
/**
DbusmenuMenuitem:
diff --git a/libdbusmenu-gtk/client.c b/libdbusmenu-gtk/client.c
index bc97b97..e79d088 100644
--- a/libdbusmenu-gtk/client.c
+++ b/libdbusmenu-gtk/client.c
@@ -512,7 +512,7 @@ image_property_handle (DbusmenuMenuitem * item, const gchar * property, const GV
if (!g_strcmp0(property, DBUSMENU_MENUITEM_PROP_ICON_DATA)) {
/* If we have an image already built from a name that is
way better than a pixbuf. Keep it. */
- if (gtkimage != NULL && gtk_image_get_storage_type(GTK_IMAGE(gtkimage)) == GTK_IMAGE_ICON_NAME) {
+ if (gtkimage != NULL && (gtk_image_get_storage_type(GTK_IMAGE(gtkimage)) == GTK_IMAGE_ICON_NAME || gtk_image_get_storage_type(GTK_IMAGE(gtkimage)) == GTK_IMAGE_EMPTY)) {
return;
}
}
@@ -524,6 +524,12 @@ image_property_handle (DbusmenuMenuitem * item, const gchar * property, const GV
/* If there is no name, by golly we want no
icon either. */
gtkimage = NULL;
+ } else if (g_strcmp0(iconname, DBUSMENU_MENUITEM_ICON_NAME_BLANK) == 0) {
+ if (gtkimage != NULL) {
+ g_object_unref(gtkimage);
+ }
+
+ gtkimage = gtk_image_new();
} else {
/* Look to see if we want to have an icon with the 'ltr' or
'rtl' depending on what we're doing. */
@@ -583,6 +589,14 @@ image_property_handle (DbusmenuMenuitem * item, const gchar * property, const GV
}
+ if (gtkimage != NULL) {
+ gint width, height;
+ gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &width, &height);
+
+ gtk_widget_set_size_request(GTK_WIDGET(gtkimage), width, height);
+ gtk_misc_set_alignment(GTK_MISC(gtkimage), 0.0, 0.5);
+ }
+
genericmenuitem_set_image(GENERICMENUITEM(gimi), gtkimage);
return;
diff --git a/tests/test-gtk-label.json b/tests/test-gtk-label.json
index 973ab7b..755bd44 100644
--- a/tests/test-gtk-label.json
+++ b/tests/test-gtk-label.json
@@ -242,8 +242,8 @@
"label": "sad"},
{"id": 89,
"type": "standard",
- "icon-name": "face-sick",
- "label": "sick"}
+ "icon-name": "blank-icon",
+ "label": "blank"}
]
},
{"id": 9, "type": "standard",