← Back to team overview

ayatana-commits team mailing list archive

[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