GNOME Bugzilla – Bug 358467
Orca doesn't read check items status in Users and groups dialog of Gnome
Last modified: 2006-11-16 17:29:25 UTC
Please describe the problem: When in the "users and groups" dialog reached from the preferences menu of the system menu in Gnome and when on the page called "privileges" of the "add user" dialog, there's a table where you can decide if a new user is to be allowed to use cdrom drives, sound, modems etc. This tables items have check boxes next to them which are either checked or not. Orca can't read the status of these check boxes, in fact it doesn't know they are there, making it a guesswork to assign privileges to a new user of the system. Steps to reproduce: 1. go to menu "system"|"preferences"|"users and groups" and select it. From the dialog that comes up hit the "add user" button to reach the "add user" dialog. 2. From the tabs of that dialog choose "privileges. 3. Tab to the table containing items such as "use sound" etc. Arrow up and down the table and press space bar to check/uncheck items. Actual results: Orca doesn't tell me if the item is checked or unchecked making adding privileges a guesswork. Expected results: When arrowing up or down the table you should hear Orca announcing whether an item in the table is checked or not and when pressing space bar Orca should announce the change of status from checked to unchecked or viseversa. Does this happen every time? Yes Other information:
Here's the accessible component ancestry when focus is on one of the table cells in the table under the "User Priviledges" tab on the "New User Account" +-name='users-admin' role='application' state='' relations='' +-name='New user account' role='dialog' state='ACTIVE ENABLED MODAL RESIZABLE SENSITIVE SHOWING VISIBLE' relations='' +-name=None role='filler' state='ENABLED SENSITIVE SHOWING VERTICAL VISIBLE' relations='' +-name=None role='page tab list' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations='' +-name='User Privileges' role='page tab' state='ENABLED MULTI_LINE SELECTABLE SELECTED SENSITIVE SHOWING VISIBLE' relations='' +-name=None role='scroll pane' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations='' +-name=None role='table' state='ENABLED FOCUSABLE FOCUSED SENSITIVE SHOWING VISIBLE MANAGES_DESCENDANTS' relations='' +-name=None role='table cell' state='ACTIVE ENABLED FOCUSABLE SELECTABLE SELECTED SENSITIVE SHOWING TRANSIENT VISIBLE' relations='' Here's the complete accessible component hierarchy for the whole user-admin application when focus is on one of the table cells in the table under the "User Priviledges" tab on the "New User Account" +-name='users-admin' role='application' state='' relations='' +-name='Users settings' role='dialog' state='ENABLED RESIZABLE SENSITIVE SHOWING VISIBLE' relations='' +-name=None role='filler' state='ENABLED SENSITIVE SHOWING VERTICAL VISIBLE' relations='' +-name=None role='filler' state='ENABLED SENSITIVE SHOWING VERTICAL VISIBLE' relations='' +-name=None role='filler' state='ENABLED HORIZONTAL SENSITIVE SHOWING VISIBLE' relations='' +-name=None role='scroll pane' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations='' +-name=None role='table' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE MANAGES_DESCENDANTS' relations='' +-name=None role='scroll bar' state='ENABLED HORIZONTAL SENSITIVE SHOWING VISIBLE' relations='' +-name=None role='filler' state='ENABLED SENSITIVE SHOWING VERTICAL VISIBLE' relations='' +-name='Add User' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations='' +-name='Properties' role='push button' state='FOCUSABLE SHOWING VISIBLE' relations='' +-name='Delete' role='push button' state='FOCUSABLE SHOWING VISIBLE' relations='' +-name='Manage Groups' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations='' +-name=None role='filler' state='ENABLED HORIZONTAL SENSITIVE SHOWING VISIBLE' relations='' +-name='Close' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations='' +-name='Help' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations='' +-name='New user account' role='dialog' state='ACTIVE ENABLED MODAL RESIZABLE SENSITIVE SHOWING VISIBLE' relations='' +-name=None role='filler' state='ENABLED SENSITIVE SHOWING VERTICAL VISIBLE' relations='' +-name=None role='page tab list' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations='' +-name='Account' role='page tab' state='ENABLED MULTI_LINE SELECTABLE SENSITIVE SHOWING VISIBLE' relations='' +-name='User Privileges' role='page tab' state='ENABLED MULTI_LINE SELECTABLE SELECTED SENSITIVE SHOWING VISIBLE' relations='' +-name=None role='scroll pane' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations='' +-name=None role='table' state='ENABLED FOCUSABLE FOCUSED SENSITIVE SHOWING VISIBLE MANAGES_DESCENDANTS' relations='' +-name='Advanced' role='page tab' state='ENABLED MULTI_LINE SELECTABLE SENSITIVE SHOWING VISIBLE' relations='' +-name=None role='filler' state='ENABLED HORIZONTAL SENSITIVE SHOWING VISIBLE' relations='' +-name='OK' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations='' +-name='Cancel' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations='' You'll notice from: +-name='User Privileges' role='page tab' state='ENABLED MULTI_LINE SELECTABLE SELECTED SENSITIVE SHOWING VISIBLE' relations='' +-name=None role='scroll pane' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations='' +-name=None role='table' state='ENABLED FOCUSABLE FOCUSED SENSITIVE SHOWING VISIBLE MANAGES_DESCENDANTS' relations='' above, that we can't see the table cell children in the table. at-poke can't see them either. Looks like we have another broken application. I'll take a look at the user-admin source and file a bug, and block this one against it.
I've filed bug #359643 against the gnome-system-tools module (which contains the user-admin application) for this problem. Marking the summary of this bug to indicate that we are currently blocked.
Add accessibility keyword. Apologies for spam.
*** Bug 365009 has been marked as a duplicate of this bug. ***
I'm not sure this bug is really blocked - it may have been a simple matter of telling at-poke to dig into children that manage their descendants. This "don't dig" feature is enabled by default in at-poke and you need to remember to disable it each time you run at-poke. See also my comments in bug 365009.
This bug seems to no longer exist on latest Ubuntu Edgy with latest Orca from CVS. I can go to the Privileges pane and happy arrow up and down and Orca reports what it's seeing. Can somebody confirm this please, before I close it?
Okay, I now know what's going on here. The table cells on the User privilege pane each have two children; a checkbox and a label. Orca is not speaking the checkbox because when it calls util.getRealActiveDescendant(), that's just returning the label. The approach I'm going to take here is to write an Orca users-admin script, and override _getSpeechForTableCell() to process both the children. We may eventually have to put similar functionality into the generic _getSpeechForTableCell() in speechgenerator.py too. Removing the "blocked", as we're not really blocked on this.
Created attachment 75409 [details] [review] Patch to hopefully fix the problem.
Changes checked into CVS HEAD. Works nicely for me. Could you give it a try please? If it's fixed, I'll close the bug. Thanks.
This definitely fixes speech for me. The braille should be updated as well, however, to show the checkbox.
Okay, I'll add in a simpler patch to the users-admin.py script for the BrailleGenerator class tomorrow. Thanks.
Hmm, please pardon my total ignorance here, but what's the best way to check out things from CVS head? Is there a working client for Gnome? I know this isn't strictly on topic, but if i am to check out and test Orca to see if this bug is fixed, i sorta need to know since i still consider myself a kinda newbie to the whole Linux concept. /Krister
Hi Krister, There is a useful web page: http://developer.gnome.org/tools/cvs.html on how to setup anonymous CVS for GNOME. Once you've done that, then process will be something like: % cd /where/you/want/the/orca/source/code/to/go % cvs co orca % cd orca % ./autogen --prefix=/usr % make % sudo make install Then you should ber able to use the new Orca from CVS HEAD just like the one you previously had. Hope this helps.
Created attachment 75454 [details] [review] Patch to add in braille support as well.
New patch also checked into CVS HEAD. Seems to work nicely for me. Please let me know if it fixes the problem for you (both speech and braille).
I just did a check of this, and it seems to be OK, except for the relationship between the checkbox and the text associated with the checkbox on the braille display. It's currently presents this: < > CheckBox Send and receive faxes ^ +---- Cell 0 is here Ideally, it would be: Send and receive faxes < > CheckBox ^ +---- Cell 0 is here Since this is being taken care of in a custom script for the app, I'm curious if this might be something that could be scripted for.
It could certainly be scripted for. The script has it's own version of _getBrailleRegionsForTableCell(). The User Priviledges dialog appears to be the only place in the application where a table cell contains other table cells. I could read them in reverse order and set the focused region to the first one read ("Send and receive faxes" in your example). + def _getBrailleRegionsForTableCell(self, obj): + """Get the braille for a table cell. Check to see if the table cell + has any children. If it does, then call + _getBrailleRegionsForTableCell() for each of them. If it doesn't, + then just return the utterances returned by the default table cell + braille handler. + + Arguments: + - obj: the table cell + + Returns a list where the first element is a list of Regions to display + and the second element is the Region which should get focus. + """ + + regions = [] + brailleGen = braillegenerator.BrailleGenerator + + if obj and obj.childCount: + for i in range(0, obj.childCount): + child = obj.child(i) + [cellRegions, focusRegion] = \ + self._getBrailleRegionsForTableCell(child) + + if len(regions): + regions.append(braille.Region(" ")) + regions.append(cellRegions[0]) + regions = [regions, focusRegion] + else: + regions = brailleGen._getBrailleRegionsForTableCell(self, obj) + + return regions
Sounds like a possibility. Is there a way to make sure it's only done in tables of this sort (just in case there are other tables that we don't want to do the reverse thing to)?
Created attachment 76603 [details] [review] Patch to reverse the order in which the user privileges tabl cells are spoken and brailled.
Latest patch checked into CVS HEAD. Will/Mike, can you confirm that this is now working to your satisfaction? If so, I'll close it out as FIXED. Thanks.
Is there anything that can be done on the gnome-system-tools side? notice that time-admin (also in g-s-t) has a similar table to select NTP servers.
(In reply to comment #20) > Latest patch checked into CVS HEAD. Will/Mike, can you confirm that > this is now working to your satisfaction? If so, I'll close it out > as FIXED. Thanks. Looks good to me. Thanks!
(In reply to comment #21) > Is there anything that can be done on the gnome-system-tools side? notice that > time-admin (also in g-s-t) has a similar table to select NTP servers. Wow! Thanks for asking. We need more people like you. :-) I'm not sure about an answer. The problem is that we currently end up with a wierd hierarchy where two table cells are children of a table cell: table +--table cell +-- table cell (the checkbox graphical box widget) +-- table cell (the label for the checkbox) It *might* be nice (not sure we can handle it correctly yet) if the label and graphical box had a label_for and labeled_by relation. It might be even nicer if they could be represented by a single object, much like the checkboxes we see outside of tables.
The other thing is that we need to file a bug against time-admin for the same problem (and write a time-admin.py Orca script to work around that problem. I'll look into doing that before I close out this bug. Thanks Carlos.
Created attachment 76708 [details] [review] Patch to map the time-admin application to the users-admin script so that it can correctly read the table of time servers.
I've filed bug #376015 against gnome-system-tools/time-admin for the time server table problem. Removing the dependency on bug #359643 for this bug. Closing as FIXED.