After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 358467 - Orca doesn't read check items status in Users and groups dialog of Gnome
Orca doesn't read check items status in Users and groups dialog of Gnome
Status: RESOLVED FIXED
Product: orca
Classification: Applications
Component: general
1.0.x
Other All
: Normal normal
: ---
Assigned To: Rich Burridge
Orca Maintainers
: 365009 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2006-09-30 09:59 UTC by krister
Modified: 2006-11-16 17:29 UTC
See Also:
GNOME target: ---
GNOME version: 2.15/2.16


Attachments
Patch to hopefully fix the problem. (4.22 KB, patch)
2006-10-25 20:29 UTC, Rich Burridge
none Details | Review
Patch to add in braille support as well. (4.30 KB, patch)
2006-10-26 16:28 UTC, Rich Burridge
none Details | Review
Patch to reverse the order in which the user privileges tabl cells are spoken and brailled. (1.67 KB, patch)
2006-11-14 22:39 UTC, Rich Burridge
none 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. (537 bytes, patch)
2006-11-16 17:22 UTC, Rich Burridge
none Details | Review

Description krister 2006-09-30 09:59:39 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:
Comment 1 Rich Burridge 2006-10-04 16:42:36 UTC
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.
Comment 2 Rich Burridge 2006-10-04 17:08:41 UTC
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.
Comment 3 Willie Walker 2006-10-15 00:25:38 UTC
Add accessibility keyword.  Apologies for spam.
Comment 4 Willie Walker 2006-10-25 15:03:26 UTC
*** Bug 365009 has been marked as a duplicate of this bug. ***
Comment 5 Willie Walker 2006-10-25 15:05:35 UTC
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.
Comment 6 Rich Burridge 2006-10-25 15:33:30 UTC
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?
Comment 7 Rich Burridge 2006-10-25 16:43:24 UTC
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.
Comment 8 Rich Burridge 2006-10-25 20:29:07 UTC
Created attachment 75409 [details] [review]
Patch to hopefully fix the problem.
Comment 9 Rich Burridge 2006-10-25 20:34:54 UTC
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.
Comment 10 Willie Walker 2006-10-25 22:53:56 UTC
This definitely fixes speech for me.  The braille should be updated as well, however, to show the checkbox.
Comment 11 Rich Burridge 2006-10-25 23:15:11 UTC
Okay, I'll add in a simpler patch to the users-admin.py
script for the BrailleGenerator class tomorrow. Thanks.
Comment 12 krister 2006-10-26 09:17:12 UTC
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
Comment 13 Rich Burridge 2006-10-26 15:04:53 UTC
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.
Comment 14 Rich Burridge 2006-10-26 16:28:51 UTC
Created attachment 75454 [details] [review]
Patch to add in braille support as well.
Comment 15 Rich Burridge 2006-10-26 16:31:26 UTC
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).
Comment 16 Willie Walker 2006-11-14 00:57:10 UTC
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.
Comment 17 Rich Burridge 2006-11-14 17:38:56 UTC
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

Comment 18 Willie Walker 2006-11-14 20:19:01 UTC
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)?
Comment 19 Rich Burridge 2006-11-14 22:39:37 UTC
Created attachment 76603 [details] [review]
Patch to reverse the order in which the user privileges tabl cells are spoken and brailled.
Comment 20 Rich Burridge 2006-11-14 22:43:35 UTC
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.
Comment 21 Carlos Garnacho 2006-11-16 12:25:48 UTC
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.
Comment 22 Willie Walker 2006-11-16 15:04:28 UTC
(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!
Comment 23 Willie Walker 2006-11-16 15:19:22 UTC
(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.
Comment 24 Rich Burridge 2006-11-16 15:54:51 UTC
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.
Comment 25 Rich Burridge 2006-11-16 17:22:34 UTC
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.
Comment 26 Rich Burridge 2006-11-16 17:29:25 UTC
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.