aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac2
-rw-r--r--libdbusmenu-glib/client.c3
-rw-r--r--libdbusmenu-glib/defaults.c1
-rw-r--r--libdbusmenu-glib/menuitem.h12
-rw-r--r--libdbusmenu-gtk/client.c6
5 files changed, 23 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac
index fd69595..5ed709d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -64,6 +64,7 @@ AM_CONDITIONAL([USE_GTK3], [test "x$with_gtk" = "x3"])
AS_IF([test "x$enable_gtk" != "xno"],[
AS_IF([test "x$with_gtk" = x3],
[PKG_CHECK_MODULES(DBUSMENUGTK, gtk+-3.0 >= $GTK3_REQUIRED_VERSION
+ atk
glib-2.0 >= $GLIB_REQUIRED_VERSION,
[have_gtk=yes]
)
@@ -71,6 +72,7 @@ AS_IF([test "x$with_gtk" = x3],
],
[test "x$with_gtk" = x2],
[PKG_CHECK_MODULES(DBUSMENUGTK, gtk+-2.0 >= $GTK_REQUIRED_VERSION
+ atk
glib-2.0 >= $GLIB_REQUIRED_VERSION,
[have_gtk=yes]
)
diff --git a/libdbusmenu-glib/client.c b/libdbusmenu-glib/client.c
index 9129db5..a2330d1 100644
--- a/libdbusmenu-glib/client.c
+++ b/libdbusmenu-glib/client.c
@@ -331,7 +331,7 @@ dbusmenu_client_class_init (DbusmenuClientClass *klass)
return;
}
-#define LAYOUT_PROPS_COUNT 5
+#define LAYOUT_PROPS_COUNT 6
static void
dbusmenu_client_init (DbusmenuClient *self)
@@ -359,6 +359,7 @@ dbusmenu_client_init (DbusmenuClient *self)
layout_props[2] = DBUSMENU_MENUITEM_PROP_VISIBLE;
layout_props[3] = DBUSMENU_MENUITEM_PROP_ENABLED;
layout_props[4] = DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY;
+ layout_props[5] = DBUSMENU_MENUITEM_PROP_ACCESSIBLE_DESC;
layout_props[LAYOUT_PROPS_COUNT] = NULL;
priv->layout_props = g_variant_new_strv((const gchar * const *)layout_props, LAYOUT_PROPS_COUNT);
g_variant_ref_sink(priv->layout_props);
diff --git a/libdbusmenu-glib/defaults.c b/libdbusmenu-glib/defaults.c
index 1cacc34..d6ee7cc 100644
--- a/libdbusmenu-glib/defaults.c
+++ b/libdbusmenu-glib/defaults.c
@@ -89,6 +89,7 @@ dbusmenu_defaults_init (DbusmenuDefaults *self)
dbusmenu_defaults_default_set(self, DBUSMENU_CLIENT_TYPES_DEFAULT, DBUSMENU_MENUITEM_PROP_SHORTCUT, G_VARIANT_TYPE("aas"), NULL);
dbusmenu_defaults_default_set(self, DBUSMENU_CLIENT_TYPES_DEFAULT, DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY, G_VARIANT_TYPE_STRING, NULL);
dbusmenu_defaults_default_set(self, DBUSMENU_CLIENT_TYPES_DEFAULT, DBUSMENU_MENUITEM_PROP_DISPOSITION, G_VARIANT_TYPE_STRING, g_variant_new_string(DBUSMENU_MENUITEM_DISPOSITION_NORMAL));
+ dbusmenu_defaults_default_set(self, DBUSMENU_CLIENT_TYPES_DEFAULT, DBUSMENU_MENUITEM_PROP_ACCESSIBLE_DESC,G_VARIANT_TYPE_STRING, NULL);
/* Separator defaults */
dbusmenu_defaults_default_set(self, DBUSMENU_CLIENT_TYPES_SEPARATOR, DBUSMENU_MENUITEM_PROP_VISIBLE, G_VARIANT_TYPE_BOOLEAN, g_variant_new_boolean(TRUE));
diff --git a/libdbusmenu-glib/menuitem.h b/libdbusmenu-glib/menuitem.h
index 64dc87c..76422f9 100644
--- a/libdbusmenu-glib/menuitem.h
+++ b/libdbusmenu-glib/menuitem.h
@@ -154,6 +154,18 @@ G_BEGIN_DECLS
*/
#define DBUSMENU_MENUITEM_PROP_ICON_DATA "icon-data"
/**
+ * DBUSMENU_MENUITEM_PROP_ACCESSIBLE_DESC:
+ *
+ * #DbusmenuMenuitem property used to provide a textual description of any
+ * information that the icon may convey. The contents of this property are
+ * passed through to assistive technologies such as the Orca screen reader.
+ * The contents of this property will not be visible in the menu item. If
+ * this property is set, Orca will use this property instead of the label
+ * property.
+ * Type: #G_VARIANT_TYPE_STRING
+ */
+#define DBUSMENU_MENUITEM_PROP_ACCESSIBLE_DESC "accessible-desc"
+/**
* DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE:
*
* #DbusmenuMenuitem property that says what type of toggle entry should
diff --git a/libdbusmenu-gtk/client.c b/libdbusmenu-gtk/client.c
index 533764a..14c71ab 100644
--- a/libdbusmenu-gtk/client.c
+++ b/libdbusmenu-gtk/client.c
@@ -32,6 +32,7 @@ License version 3 and version 2.1 along with this program. If not, see
#include <gtk/gtk.h>
#include <glib.h>
+#include <atk/atk.h>
#include "client.h"
#include "menuitem.h"
@@ -745,6 +746,9 @@ menu_prop_change_cb (DbusmenuMenuitem * mi, gchar * prop, GVariant * variant, Db
process_submenu(mi, gmi, variant, gtkclient);
} else if (!g_strcmp0(prop, DBUSMENU_MENUITEM_PROP_DISPOSITION)) {
process_disposition(mi, gmi, variant, gtkclient);
+ } else if (!g_strcmp0(prop, DBUSMENU_MENUITEM_PROP_ACCESSIBLE_DESC)) {
+ atk_object_set_name(gtk_widget_get_accessible(GTK_WIDGET(gmi)), variant == NULL ? NULL :
+ g_variant_get_string(variant, NULL));
}
return;
@@ -890,6 +894,8 @@ dbusmenu_gtkclient_newitem_base (DbusmenuGtkClient * client, DbusmenuMenuitem *
process_toggle_state(item, gmi, dbusmenu_menuitem_property_get_variant(item, DBUSMENU_MENUITEM_PROP_TOGGLE_STATE));
process_submenu(item, gmi, dbusmenu_menuitem_property_get_variant(item, DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY), client);
process_disposition(item, gmi, dbusmenu_menuitem_property_get_variant(item, DBUSMENU_MENUITEM_PROP_DISPOSITION), client);
+ atk_object_set_name(gtk_widget_get_accessible(GTK_WIDGET(gmi)),
+ g_variant_get_string(dbusmenu_menuitem_property_get_variant(item, DBUSMENU_MENUITEM_PROP_ACCESSIBLE_DESC), NULL));
refresh_shortcut(client, item);
/* Oh, we're a child, let's deal with that */