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 583597 - Accessible table interface broken for Contacts list
Accessible table interface broken for Contacts list
Status: RESOLVED WONTFIX
Product: ekiga
Classification: Applications
Component: Accessibility
3.2.x
Other All
: Normal normal
: ---
Assigned To: Ekiga maintainers
Ekiga maintainers
gnome[unmaintained]
: 583013 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2009-05-22 21:23 UTC by Joanmarie Diggs (IRC: joanie)
Modified: 2020-06-06 16:31 UTC
See Also:
GNOME target: ---
GNOME version: 2.25/2.26



Description Joanmarie Diggs (IRC: joanie) 2009-05-22 21:23:36 UTC
Steps to reproduce:

1. Launch Ekiga with no "Neighbours" present.

2. Launch Accerciser. In Accerciser's tree of accessibles (left-hand pane) select the accessible of ROLE_TABLE which corresponds to Ekiga's Contacts list.

3. In Accerciser's IPython Console, type:

table = acc.queryTable()
for i in range(table.nRows):
    print table.getIndexAt(i, 0), table.getAccessibleAt(i, 0).getIndexInParent()

4. On a different computer, sign on to Ekiga so that the Neighbour node gets populated.

5. On the original computer, expand the Neighbours node to show the neighbor (if it is not already expanded).

6. Re-print the table row information from step 3.

Expected results:

1. The two indices printed for each row would be the same.

2. The indices for any given row would not repeat those of other rows.

Actual results (Step 3):

1. The two indices printed for each row are the same, BUT

2. The indices associated with the unpopulated "Neighbours" node are a repeat of those for the row "Local roster" node.

Example:

3 3      <------ Local roster
7 7
11 11
13 13
9 9
15 15
3 3      <------ Neighbours

Actual results (Step 6):

1. The indices printed for each row are not always the same, AND

2. All rows related to "Neighbours" share the same indices as the "Local roster" node.

Example:

3 3
7 7
13 11    ?
15 13    ?
9 9
17 15    ?
3 3      <------ Neighbours (row serving as section indicator)
3 3      <------ Neighbours (1/1)
3 3      <------ Jane Doe

The impact of this bug is that when a user is arrowing about his/her Contacts list, all of the "Neighbours" rows are spoken and brailled as "Local roster".

I can reproduce this in OpenSolaris 2009.06 - build 111a (Ekiga 3.0.1) and Ubuntu Jaunty (Ekiga 3.2.0).
Comment 1 Snark 2009-05-23 07:01:14 UTC
I have no clue what you're talking about... the local roster and the neighbours appear in the same widget using the same code : how could it be broken for one and not the other!?
Comment 2 Joanmarie Diggs (IRC: joanie) 2009-05-23 18:18:04 UTC
And I'm afraid I don't know how to make applications accessible when they are using non-standard widgets; I know how to make Orca provide access to accessible widgets. :-) Therefore I'm adding Li Yuan to the CC list because he knows how to do both. :-) Hopefully he can provide the needed info.
Comment 3 Li Yuan 2009-05-27 09:42:34 UTC
Is contacts list a standard Gtk+ widget or custom widget?
Comment 4 Snark 2009-05-27 12:02:15 UTC
It's a widget built with a GtkTreeView, but we do use a special cell renderer, see: http://git.gnome.org/cgit/ekiga/tree/lib/gui/gm-cell-renderer-bitext.c

But as I already asked : the local roster and the neighbours appear in the same widget using the same code : how could it be broken for one and not the other!?
Comment 5 Li Yuan 2009-06-03 10:13:48 UTC
(In reply to comment #4)
> It's a widget built with a GtkTreeView, but we do use a special cell renderer,
> see: http://git.gnome.org/cgit/ekiga/tree/lib/gui/gm-cell-renderer-bitext.c
> 
For a special cell renderer, we need an a11y implementation.

> But as I already asked : the local roster and the neighbours appear in the same
> widget using the same code : how could it be broken for one and not the other!?
> 

Does tree model emit "row-inserted" during step 4?
Comment 6 Snark 2009-06-03 12:42:50 UTC
I don't know how to provide "an a11y implementation" for the cell renderer -- could you give hints?

The tree model is nothing fancy, and as I told several time, the same code path is used to add all presence information to the gui, so I can't see how things could be broken for the avahi presentities and not the the local roster!
Comment 7 Willie Walker 2009-11-09 22:15:56 UTC
(In reply to comment #6)
> I don't know how to provide "an a11y implementation" for the cell renderer --
> could you give hints?

Li - can you point Snark in the right direction, please?  :-)
Comment 8 Li Yuan 2009-11-10 08:32:10 UTC
(In reply to comment #6)
> I don't know how to provide "an a11y implementation" for the cell renderer --
> could you give hints?
> 
> The tree model is nothing fancy, and as I told several time, the same code path
> is used to add all presence information to the gui, so I can't see how things
> could be broken for the avahi presentities and not the the local roster!

Just refer to cellrenderer code in gail, e.g. gailtextcell.c. If its major function is render text, the a11y implementation needs to implement update_cache (in GAIL_RENDERER_CELL_CLASS)and get_name (in ATK_OBJECT_CLASS) at least.
Comment 9 Snark 2009-12-17 13:53:58 UTC
I finally found the time to have a look at what you explained, and read gailtextcell.c ; from what I understand :
(1) get_name only returns the text in the cell -- we have two texts, should we concatenate both g_strdup_printf ("%s %s", first, second); ? I guess in that case we'll have to cache that for memory management purpose...
(2) update_cache... uh... I didn't get what it was doing exactly... it's emitting various signals, but it's not clear what I'm supposed to do...
Comment 10 Tobias Mueller 2010-04-04 18:44:10 UTC
Hm. Any news on this issue?
Comment 11 Li Yuan 2010-04-06 07:20:16 UTC
(In reply to comment #9)
> I finally found the time to have a look at what you explained, and read
> gailtextcell.c ; from what I understand :
> (1) get_name only returns the text in the cell -- we have two texts, should we
> concatenate both g_strdup_printf ("%s %s", first, second); ? I guess in that
> case we'll have to cache that for memory management purpose...

This depends on what you want to output to the users. Just find the best way to express the content of the two texts should be OK.

> (2) update_cache... uh... I didn't get what it was doing exactly... it's
> emitting various signals, but it's not clear what I'm supposed to do...

update_cache is called when the cell's value maybe changed, gailtreeview.c calls this function. Basically compare the value you cached to the current value, if there is any change, send out a signal.
Comment 12 ralph Blach 2010-05-03 20:21:39 UTC
(In reply to comment #0)
> Steps to reproduce:
> 
> 1. Launch Ekiga with no "Neighbours" present.
> 
> 2. Launch Accerciser. In Accerciser's tree of accessibles (left-hand pane)
> select the accessible of ROLE_TABLE which corresponds to Ekiga's Contacts list.
> 
> 3. In Accerciser's IPython Console, type:
> 
> table = acc.queryTable()
> for i in range(table.nRows):
>     print table.getIndexAt(i, 0), table.getAccessibleAt(i,
> 0).getIndexInParent()
> 
> 4. On a different computer, sign on to Ekiga so that the Neighbour node gets
> populated.
> 
> 5. On the original computer, expand the Neighbours node to show the neighbor
> (if it is not already expanded).
> 
> 6. Re-print the table row information from step 3.
> 
> Expected results:
> 
> 1. The two indices printed for each row would be the same.
> 
> 2. The indices for any given row would not repeat those of other rows.
> 
> Actual results (Step 3):
> 
> 1. The two indices printed for each row are the same, BUT
> 
> 2. The indices associated with the unpopulated "Neighbours" node are a repeat
> of those for the row "Local roster" node.
> 
> Example:
> 
> 3 3      <------ Local roster
> 7 7
> 11 11
> 13 13
> 9 9
> 15 15
> 3 3      <------ Neighbours
> 
> Actual results (Step 6):
> 
> 1. The indices printed for each row are not always the same, AND
> 
> 2. All rows related to "Neighbours" share the same indices as the "Local
> roster" node.
> 
> Example:
> 
> 3 3
> 7 7
> 13 11    ?
> 15 13    ?
> 9 9
> 17 15    ?
> 3 3      <------ Neighbours (row serving as section indicator)
> 3 3      <------ Neighbours (1/1)
> 3 3      <------ Jane Doe
> 
> The impact of this bug is that when a user is arrowing about his/her Contacts
> list, all of the "Neighbours" rows are spoken and brailled as "Local roster".
> 
> I can reproduce this in OpenSolaris 2009.06 - build 111a (Ekiga 3.0.1) and
> Ubuntu Jaunty (Ekiga 3.2.0).

(In reply to comment #0)
> Steps to reproduce:
> 
> 1. Launch Ekiga with no "Neighbours" present.
> 
> 2. Launch Accerciser. In Accerciser's tree of accessibles (left-hand pane)
> select the accessible of ROLE_TABLE which corresponds to Ekiga's Contacts list.
> 
> 3. In Accerciser's IPython Console, type:
> 
> table = acc.queryTable()
> for i in range(table.nRows):
>     print table.getIndexAt(i, 0), table.getAccessibleAt(i,
> 0).getIndexInParent()
> 
> 4. On a different computer, sign on to Ekiga so that the Neighbour node gets
> populated.
> 
> 5. On the original computer, expand the Neighbours node to show the neighbor
> (if it is not already expanded).
> 
> 6. Re-print the table row information from step 3.
> 
> Expected results:
> 
> 1. The two indices printed for each row would be the same.
> 
> 2. The indices for any given row would not repeat those of other rows.
> 
> Actual results (Step 3):
> 
> 1. The two indices printed for each row are the same, BUT
> 
> 2. The indices associated with the unpopulated "Neighbours" node are a repeat
> of those for the row "Local roster" node.
> 
> Example:
> 
> 3 3      <------ Local roster
> 7 7
> 11 11
> 13 13
> 9 9
> 15 15
> 3 3      <------ Neighbours
> 
> Actual results (Step 6):
> 
> 1. The indices printed for each row are not always the same, AND
> 
> 2. All rows related to "Neighbours" share the same indices as the "Local
> roster" node.
> 
> Example:
> 
> 3 3
> 7 7
> 13 11    ?
> 15 13    ?
> 9 9
> 17 15    ?
> 3 3      <------ Neighbours (row serving as section indicator)
> 3 3      <------ Neighbours (1/1)
> 3 3      <------ Jane Doe
> 
> The impact of this bug is that when a user is arrowing about his/her Contacts
> list, all of the "Neighbours" rows are spoken and brailled as "Local roster".
> 
> I can reproduce this in OpenSolaris 2009.06 - build 111a (Ekiga 3.0.1) and
> Ubuntu Jaunty (Ekiga 3.2.0).

In the latest version of Egika, the python script no longer works.

I am looking in to the problem and hope rewrite the script.

Chip
Comment 13 Joanmarie Diggs (IRC: joanie) 2013-01-07 01:37:04 UTC
*** Bug 583013 has been marked as a duplicate of this bug. ***
Comment 14 André Klapper 2020-06-06 16:31:07 UTC
Ekiga is not under active development anymore:
https://gitlab.gnome.org/Infrastructure/Infrastructure/-/issues/273

Ekiga saw its last release 7 years ago. The last code commits were 4 years ago.

Closing this report as WONTFIX as part of Bugzilla Housekeeping to reflect reality. Please feel free to reopen this ticket (and transfer the project to GNOME Gitlab, as GNOME Bugzilla is deprecated) if anyone takes the responsibility for active Ekiga development again in the future.