Re: [g-a-devel]Detecting opening and closure of dialogs using CSPI



Michael Meeks wrote:

> On Sat, 2002-03-16 at 15:58, Mukund wrote:
> >       parent = Accessible_getParent (event->source);
> >       if (!parent)
> 
>         This suffers from several problems:
> 
>         * an exception will return a NULL parent
>         * children-changed is fired for accessibles that will be
>           destroyed soon - causing a race nightmare (perhaps)

children-changed is fired when children are removed.  We need to be
able to deal with this common case (where the children are being
destroyed as the event is fired), and I believe that we do.

>         * the parent of an application should be a desktop not NULL

That's right.

>         * the performance issues here are just horrible,
>                 + we get notified of all children changes

We only get notified of the child changes that we "need", i.e.
children-changed on accessible object that have been instantiated.
We don't get notifications for child-changed from accessible objects
that haven't been referenced before.

>                 + for each we do a roundtrip to the remote process

A possible efficiency improvement would be to only fire
children-changed events for objects whose ref count is
greater than one, that is, objects that external clients
are holding references to.  But I don't think that this will be
a big issue right away.
 
>         When we implement the 'listenForEventOn' I think we should allow the
> API to listen for events on a single accessible, and or on an
> accessible's children, otherwise we're going to see loads of listeners
> getting all these events and then doing expensive round trips to try and
> work out where in the tree they are. IMHO not a good thing.

Actual assistive technologies will need to receive children-changed for
all objects that are actively being "used"; I don't see the
single-source
event listener API as very useful.  The children-changed events should
have
the parent object as the source, and AT can do pointer comparison
if it wants to check its own cache to find the source event.

When designing the API we intentionally left this out; we opted for
global notification since it meets the needs of most AT more
effectively.
 
-Bill

>         Hmm,
> 
>                 Michael.
> 
> --
>  mmeeks gnu org  <><, Pseudo Engineer, itinerant idiot
> 
> _______________________________________________
> Gnome-accessibility-devel mailing list
> Gnome-accessibility-devel gnome org
> http://mail.gnome.org/mailman/listinfo/gnome-accessibility-devel



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]