ayatana-commits team mailing list archive
-
ayatana-commits team
-
Mailing list archive
-
Message #03050
[Merge] lp:~themuso/indicator-applet/accessible-desc into lp:indicator-applet
Luke Yelavich has proposed merging lp:~themuso/indicator-applet/accessible-desc into lp:indicator-applet.
Requested reviews:
Indicator Applet Developers (indicator-applet-developers)
For more details, see:
https://code.launchpad.net/~themuso/indicator-applet/accessible-desc/+merge/49586
--
https://code.launchpad.net/~themuso/indicator-applet/accessible-desc/+merge/49586
Your team ayatana-commits is subscribed to branch lp:indicator-applet.
=== modified file 'src/applet-main.c'
--- src/applet-main.c 2011-01-31 20:27:31 +0000
+++ src/applet-main.c 2011-02-14 03:46:10 +0000
@@ -55,6 +55,7 @@
GdkColor *colour,
GdkPixmap *pixmap,
GtkWidget *menubar);
+static void update_accessible_desc (IndicatorObjectEntry * entry, GtkWidget * menuitem);
/*************
* main
@@ -243,6 +244,24 @@
}
static void
+accessible_desc_update (IndicatorObject * io, IndicatorObjectEntry * entry, GtkWidget * menuitem)
+{
+ g_return_if_fail(GTK_IS_WIDGET(menuitem));
+
+ IndicatorObjectClass * class = INDICATOR_OBJECT_GET_CLASS(io);
+
+ /* Not all indicator entries have a get_accessible_desc method, such as
+ indicator-application entries */
+ if (class->get_accessible_desc != NULL) {
+ entry->accessible_desc = class->get_accessible_desc(io);
+ }
+
+ update_accessible_desc(entry, GTK_WIDGET(menuitem));
+
+ return;
+}
+
+static void
entry_added (IndicatorObject * io, IndicatorObjectEntry * entry, GtkWidget * menubar)
{
g_debug("Signal: Entry Added");
@@ -319,7 +338,12 @@
gtk_menu_shell_insert(GTK_MENU_SHELL(menubar), menuitem, position.menupos);
+ g_signal_connect(G_OBJECT(io), INDICATOR_OBJECT_SIGNAL_ACCESSIBLE_DESC_UPDATE, G_CALLBACK(accessible_desc_update), menuitem);
+
if (something_visible) {
+ if (entry->accessible_desc != NULL) {
+ update_accessible_desc(entry, menuitem);
+ }
gtk_widget_show(menuitem);
}
gtk_widget_set_sensitive(menuitem, something_sensitive);
@@ -443,6 +467,23 @@
// TODO: do something sensible here
}
+static void
+update_accessible_desc(IndicatorObjectEntry * entry, GtkWidget * menuitem)
+{
+ /* FIXME: We need to deal with the use case where the contents of the
+ label overrides what is found in the atk object's name, or at least
+ orca speaks the label instead of the atk object name.
+ */
+ AtkObject * menuitem_obj = gtk_widget_get_accessible(menuitem);
+ if (entry->accessible_desc != NULL) {
+ atk_object_set_name(menuitem_obj, entry->accessible_desc);
+ } else {
+ atk_object_set_name(menuitem_obj, "");
+ }
+ return;
+}
+
+
static gboolean
load_module (const gchar * name, GtkWidget * menubar)
{
Follow ups