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

Re: Describing an application state in ATK, without Gtk

Hello Alejandro, and the other people on the list.  You've been kind the
last time, so I'm taking the liberty of writing you again.

I did make progress, but I'm still not quite there.

Before binding everything to Compiz I'm playing with a trivial SDL
application consisting in a single window which reacts to keyboard and
mouse events.  I want to make that accessible, without using any

I've modified your "dummyatk" code from the at-spi2-atk testsuite (I had
to get the git version, for I was bitten by
https://bugzilla.gnome.org/show_bug.cgi?id=751138 ); I implemented the
Text role in MyAtkComponent or at least most of its methods (by the way,
I would like to know which are necessary; do I need all the
non-deprecated ones?), and initialized the bridge correctly as you
suggested.  Now accerciser shows my widget tree, and so do the programs
in at-spi2-examples, thanks to your suggestions.  Good.

The problem is that my application window is still not "seen" as
accessible.  For example, when I use marco to switch to my window with
Ctrl+Tab, Orca vocalizes the window title followed by "inaccessible".
In the same way, brltty (I'm using the X11 driver) shows nothing.
I hadn't thought about this in advance, but now that I'm seeing the
problem it doesn't seem so surprising: there's nothing which binds (SDL)
window events to ATK.  So I suppose I should explicitly emit ATK signals
from SDL (and, later, Compiz) event handlers, for example by calling
g_signal_emit_by_name .  Is this correct?

Moreover, I'm not completely sure about the widget hierarchy I need.
Since the only thing I need to show is a label I'm tempted by the idea
of using only one Atk object, implementing all the needed roles
(only Component and Text?), probably of type window; however the ATK
documentation says that the root should have type application.  I've
tried both and I don't see any difference, but I suspect one of the two
option may not work in the end.  Shall I simulate a typical
(non-existing) interface with an application containing a window
containing a label, just to show the label?  I can if needed, but I'd
prefer not to have to implement a different set of interface for the
window and the label.  Am I completely free in this or shall I follow
some fixed schema?

Thanking you in advance,

Luca Saiu
HYPRA -- Progressons ensemble : http://hypra.fr

Reply to: