Issue 92103 - No a11y events when expanding/collapsing items in navigator
Summary: No a11y events when expanding/collapsing items in navigator
Status: CLOSED FIXED
Alias: None
Product: Writer
Classification: Application
Component: ui (show other issues)
Version: OOo 1.0.3
Hardware: Sun All
: P3 Trivial (vote)
Target Milestone: ---
Assignee: eric.savary
QA Contact: issues@sw
URL:
Keywords: accessibility
Depends on:
Blocks:
 
Reported: 2008-07-24 18:13 UTC by williewalker
Modified: 2013-08-07 14:44 UTC (History)
3 users (show)

See Also:
Issue Type: DEFECT
Latest Confirmation in: ---
Developer Difficulty: ---


Attachments

Note You need to log in before you can comment on or make changes to this issue.
Description williewalker 2008-07-24 18:13:11 UTC
1) Run OOo and create a new document with several headings in it.

2) Press F5 to bring up the Navigator window and then Alt+F6 to put focus on the
navigator.

3) Arrow to the "Headings" item and press left/right to contract/expand the item.

If you watch the events being delivered by OOo (say via the accerciser
application), you will notice that no events are being delivered by OOo when you
expand/contract the Headings item.  I believe object:state-changed:expanded
events should be delivered.

Thanks!
Comment 1 malte_timmermann 2008-11-26 14:17:06 UTC
OOo 3.2
Comment 2 williewalker 2009-03-24 19:30:12 UTC
Trackback to the Orca bug:
http://bugzilla.gnome.org/show_bug.cgi?id=356060
Comment 3 eric.savary 2009-03-26 17:09:40 UTC
OD: Please have a look
Comment 4 eric.savary 2009-03-27 09:38:37 UTC
Sorry, I forgot to set confirmed.
Comment 5 Oliver-Rainer Wittmann 2009-04-01 08:12:10 UTC
Ok, confirming issue as ES already wanted to do
Comment 6 Oliver-Rainer Wittmann 2009-04-01 15:33:07 UTC
OD->williewalker:
I am working on with issue. But, I have got a problem.
The accessible objects, which represent the items in the navigator's tree, are
transient. Thus, it does not make sense to emit events for them - no one would
listen to a newly created accessible object.

The accessible object, which represents the navigator's tree, could emit an
event stating that the expanded state of one of its children has changed
including a newly created accessible object of this child in this event -
something like "object:descendant-state-changed-expanded".
Would this be acceptable for you? Do you have another suggestion?
Comment 7 williewalker 2009-04-01 23:44:15 UTC
williewalker->OD: the AT-SPI event model is such that one registers for event
types in general instead of registering for events on specific objects.  So, it
should be OK to emit object:state-changed:expanded events for these objects.

A GTK+ example of where we see this can be found in the gtk-demo application
(/usr/demo/jds/bin/gtk-demo on OpenSolaris).  The "Icon View" item in the tree
table is an accessible table cell object with the EXPANDABLE and TRANSIENT
states and it emits the appropriate events.  Here's some examples from
accerciser when I expand/collapse the object:

object:state-changed:expanded(1, 0, None)
	source: [table cell | Icon View]
	application: [application | gtk-demo]
object:state-changed:expanded(0, 0, None)
	source: [table cell | Icon View]
	application: [application | gtk-demo]

Comment 8 Oliver-Rainer Wittmann 2009-04-02 08:18:41 UTC
Ok.

Thus, the proposed solution in OOo and OOo's ATK bridge will be:
- emit events for expanding/collapsing of a certain tree item in OOo at the
accessible object representing the navigator's tree - the event will contain a
newly created OOo accessible object representing the tree item.
- convert these events in the ATK bridge to events of newly created ATK objects
representing the corresponding tree item.
Comment 9 williewalker 2009-04-02 13:45:58 UTC
Just for clarification - how does the OOo implementation treat transient
objects? My understanding of transient objects is that they should tend to
persist as long as they are rendered on the screen.  So, for example, if one
arrows up and down the transient items of a tree, the accessible objects should
remain the same as long as they are still painted on the display.

Thus, changing the state of the object, such as expanding or collapsing it,
should not cause the old accessible peer for that object to be destroyed and a
new one created.  Instead, the same accessible should be used.
Comment 10 Oliver-Rainer Wittmann 2009-04-02 14:20:32 UTC
In this case the internal accessible object representing a navigator's tree item
is not hold by OOo core code itself. Probably, a reference is hold by the
bridge, which would keep the accessible object alive. But, I do not think that
this is the case for transient marked accessible objects. Thus, the typical life
time of an accessible object representing a navigator's tree item is very short,
even if the list item is visible on the screen.
E.g., Each call to <[accessible object of tree]::getAccessibleChild( i )>
creates a new accessible object for the tree item.
Comment 11 williewalker 2009-04-02 14:47:35 UTC
Emitting the object:state-changed:expanded is still the appropriate thing to do.
 Given that there are unknowns in the implementation, let's see what happens
with the life cycle of the objects.  We have code in Orca that attempts to deal
with different accessibles being used for the same visual object on the screen.
 So, if we get different accessibles in this case, Orca's code might work and/or
we might be able to make it work.  Thanks!
Comment 12 Oliver-Rainer Wittmann 2009-04-02 15:11:12 UTC
Yes, I am also be sure that it will work.
Comment 13 Oliver-Rainer Wittmann 2009-05-04 13:42:24 UTC
adding new constants to com::sun::star::accessibility::AccessibleEventId
indicating that a list box entry has been expanded respectively collapsed -
change file:
/offapi/com/sun/star/accessibility/AccessibleEventId.idl, rev. 271454
Comment 14 Oliver-Rainer Wittmann 2009-05-27 08:49:42 UTC
adding new vcl event ids VCLEVENT_LISTBOX_ENTRY_EXPANDED and
VCLEVENT_LISTBOX_ENTRY_COLLAPSED - changed file:
/vcl/inc/vcl/vclevent.hxx, rev. 271469
Comment 15 Oliver-Rainer Wittmann 2009-05-27 09:00:22 UTC
emit vcl events list box entry expanded resp. collapsed - changed file:
/svtools/source/contnr/svtreebx.cxx, rev. 272330

process vcl events list box entry expanded resp. collapsed in order to emit
corresponding accessibility events - changed file:
/accessibility/source/extended/accessiblelistbox.cxx, rev. 272331

map accessible events list box entry expanded resp. collapsed to corresponding
atk events - changed file:
/vcl/unx/gtk/a11y/atklistener.cxx, rev. 272333
Comment 16 Oliver-Rainer Wittmann 2009-07-28 13:54:25 UTC
OD->ES: Checked in internal installation set of cws swa11y32_2nd - please verify
Comment 17 williewalker 2009-08-04 16:06:47 UTC
This fix has been confirmed by the Orca team using the
swa11y32_2nd_en-US_SolarisIntel.tar file Thomas Lange made for me
(300m51(Build:9408)[CWS:swa11y32_2nd]).

Many thanks!
Comment 18 eric.savary 2009-08-04 23:00:00 UTC
Thanx for verifying!
Comment 19 malte_timmermann 2010-01-08 09:14:06 UTC
Fixed and integrated => closing now..