[Pidgin] #2687: [a11y] pidgin Preferences dialog Inteface -> Show system tray icon "combo box" has the wrong accessible name.

Pidgin trac at pidgin.im
Tue Aug 21 17:41:41 EDT 2007


#2687: [a11y] pidgin Preferences dialog Inteface -> Show system tray icon "combo
box" has the wrong accessible name.
---------------------------+------------------------------------------------
 Reporter:  RichBurridge   |       Type:  defect
   Status:  new            |   Priority:  minor 
Component:  pidgin (gtk)   |    Version:  2.1.0 
 Keywords:  accessibility  |    Pending:  0     
---------------------------+------------------------------------------------
 See also GNOME Orca bug #468762 which is blocked by this problem.
 http://bugzilla.gnome.org/show_bug.cgi?id=468762

 This is with pidgin v2.1.1 on Gnu/Linux Ubuntu Gutsy.

 Steps to reproduce:

 1. Launch Pidgin
 2. Get into the Preferences dialog
 3. Tab to a combo box

 Expected results:  Orca would speak the currently selected item in the
 combo
 box.

 Actual results: Orca doesn't speak the currently selected item in the
 combo box
 until you expand the combo box by pressing space bar.

 --

 I investigated the problem (see the Orca bug for all the details).
 Here's just the gist of it.

 I compared Orca speaking the pidgin "combo box" with Orca speaking
 one of it's own combo boxes.

 In pidgin, for the object:state-changed:focused event we have:

 OBJECT EVENT: object:state-changed:focused             detail=(1,0)
     app.name='pidgin'             name='Show system tray icon:'
 role='combo
 box' state='ENABLED FOCUSABLE FOCUSED SENSITIVE SHOWING VISIBLE'
 relations='LABELLED_BY LABELLED_BY'

 In Orca, for the "focus:" event for the Say all combo box, we have:

 OBJECT EVENT: focus:                                   detail=(0,0)
     app.name='orca'               name='Sentence' role='combo box'
 state='ENABLED FOCUSED SENSITIVE SHOWING VISIBLE' relations='LABELLED_BY'

 In other words, the name of the pidgin "combo box" is incorrect.

 In pidgin gtkprefs.c, there is the call to
 pidgin_prefs_dropdown_from_list()

         label = pidgin_prefs_dropdown(vbox, _("_Show system tray icon:"),
 PURPLE_PREF_STRING,
                                         PIDGIN_PREFS_ROOT "/docklet/show",
                                         _("Always"), "always",
                                         _("Never"), "never",
                                         _("On unread messages"),
 "pending",
                                         NULL);

 Function definition for pidgin_prefs_dropdown_from_list() is:

 pidgin_prefs_dropdown_from_list(GtkWidget *box, const gchar *title,
                 PurplePrefType type, const char *key, GList *menuitems)

 so we are passing in a title variable of _("_Show system tray icon:").

 We then go through this bit of code:

         ...
         if (title != NULL) {
                 hbox = gtk_hbox_new(FALSE, 5);
                 /*gtk_container_add (GTK_CONTAINER (box), hbox);*/
                 gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 0);
                 gtk_widget_show(hbox);

                 label = gtk_label_new_with_mnemonic(title);
                 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
                 gtk_widget_show(label);
         } else {
         ...

 which sets the label to the left of the "combo box". It also sets the
 variable called label.

 Further down the routine we have:

         ...
         if (label != NULL) {
                 gtk_label_set_mnemonic_widget(GTK_LABEL(label), dropdown);
                 pidgin_set_accessible_label (dropdown, label);
         }
         ...

 which is setting the accessible "label" of the dropdown widget
 (which was created with:

         dropdown = gtk_option_menu_new();

 to "_Show system tray icon:".

 (See pidgin_set_accessible_label() in gtkutils.c at about line 1168).

 This is incorrect.

-- 
Ticket URL: <http://developer.pidgin.im/ticket/2687>
Pidgin <http://pidgin.im>
Pidgin


More information about the Tracker mailing list