aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Arne Petersen <jpetersen@openismus.com>2010-03-15 12:55:51 +0100
committerJan Arne Petersen <jpetersen@openismus.com>2010-03-15 12:55:51 +0100
commit4ade827821bc897ce431304b9c562f739bbd8057 (patch)
tree8a04afc4b8286818d6d94539b322b381c975b64a
parentbf1f1526eb6d0c220dba945d42ab72c6f6a1d636 (diff)
downloadlibayatana-appindicator-4ade827821bc897ce431304b9c562f739bbd8057.tar.gz
libayatana-appindicator-4ade827821bc897ce431304b9c562f739bbd8057.tar.bz2
libayatana-appindicator-4ade827821bc897ce431304b9c562f739bbd8057.zip
Only show images if "gtk-menu-images" settings or
"always-show-image" property is TRUE.
-rw-r--r--src/libappindicator/app-indicator.c46
1 files changed, 40 insertions, 6 deletions
diff --git a/src/libappindicator/app-indicator.c b/src/libappindicator/app-indicator.c
index 5edc9fe..5689c11 100644
--- a/src/libappindicator/app-indicator.c
+++ b/src/libappindicator/app-indicator.c
@@ -1071,6 +1071,32 @@ menuitem_iterate (GtkWidget *widget,
}
}
+static gboolean
+should_show_image (GtkImage *image)
+{
+ GtkWidget *item;
+
+ item = gtk_widget_get_ancestor (GTK_WIDGET (image),
+ GTK_TYPE_IMAGE_MENU_ITEM);
+
+ if (item)
+ {
+ GtkSettings *settings;
+ gboolean gtk_menu_images;
+
+ settings = gtk_widget_get_settings (item);
+
+ g_object_get (settings, "gtk-menu-images", &gtk_menu_images, NULL);
+
+ if (gtk_menu_images)
+ return TRUE;
+
+ return gtk_image_menu_item_get_always_show_image (GTK_IMAGE_MENU_ITEM (item));
+ }
+
+ return FALSE;
+}
+
static void
update_icon_name (DbusmenuMenuitem *menuitem,
GtkImage *image)
@@ -1078,9 +1104,13 @@ update_icon_name (DbusmenuMenuitem *menuitem,
if (gtk_image_get_storage_type (image) != GTK_IMAGE_ICON_NAME)
return;
- dbusmenu_menuitem_property_set (menuitem,
- DBUSMENU_MENUITEM_PROP_ICON_NAME,
- image->data.name.icon_name);
+ if (should_show_image (image))
+ dbusmenu_menuitem_property_set (menuitem,
+ DBUSMENU_MENUITEM_PROP_ICON_NAME,
+ image->data.name.icon_name);
+ else
+ dbusmenu_menuitem_property_remove (menuitem,
+ DBUSMENU_MENUITEM_PROP_ICON_NAME);
}
/* return value specifies whether the label is set or not */
@@ -1095,9 +1125,13 @@ update_stock_item (DbusmenuMenuitem *menuitem,
gtk_stock_lookup (image->data.stock.stock_id, &stock);
- dbusmenu_menuitem_property_set (menuitem,
- DBUSMENU_MENUITEM_PROP_ICON_NAME,
- image->data.stock.stock_id);
+ if (should_show_image (image))
+ dbusmenu_menuitem_property_set (menuitem,
+ DBUSMENU_MENUITEM_PROP_ICON_NAME,
+ image->data.stock.stock_id);
+ else
+ dbusmenu_menuitem_property_remove (menuitem,
+ DBUSMENU_MENUITEM_PROP_ICON_NAME);
const gchar * label = dbusmenu_menuitem_property_get (menuitem,
DBUSMENU_MENUITEM_PROP_LABEL);