[g-a-devel] Interesting event reporting
- From: "Quiring, Sam" <Sam Quiring windriver com>
- To: <gnome-accessibility-devel gnome org>
- Subject: [g-a-devel] Interesting event reporting
- Date: Sun, 14 Dec 2008 16:39:56 -0800
Greetings,
 
I am trying to 
determine if our accessibility app can listen for a set of events and, when the 
user clicks the mouse on an object, figure out what object was clicked.  
I've been examining different sequences of events that are delivered to 
our accessibility app.  I haven't been able to find definitive 
documentation on this, so I run experiments and log the events and study those 
sequences.  The situation I'm currently examining has these initial 
conditions:
 
1. a GUI app (Hello 
World plus) is comletely visible, but is not active.
    - 
the GUI app contains a pushbutton that will bring up a dialog 
(Information(alert))
    - 
When the GUI app becomes active, the pushbutton has the 
focus
    - 
When the dialog becomes active a pushbutton with text "No" becomes 
active.
2. another app is 
active and has the focus; it is a Terminal app (user ubuntu8041...) 
 
 
The 
experiment sets up the above situation then clicks just once on the 
pushbutton in the GUI app.  That single click causes a sequence of 
events to unfold that terminates with the dialog as the active 
window.
 
I first ran this 
experiment while executing an at-spi logging app that I've written.  
When I clicked on the pushbutton, these events and only these 
events were logged:
 
TCF 40:34.041: ev 
window:activate (det1: 0x0, det2: 0x0) Hello World plus(frame)
TCF 40:34.060: 
ev window:deactivate (det1: 0x0, det2: 0x0) user ubuntu8041: 
~/ldtp-1.3.0/src(frame)
TCF 40:34.061: ev window:create (det1: 0x0, det2: 
0x0) Information(alert)
TCF 40:34.188: ev window:deactivate (det1: 0x0, det2: 
0x0) Hello World plus(frame)
TCF 40:34.189: ev window:activate (det1: 0x0, 
det2: 0x0) Information(alert)
TCF 40:34.202: ev focus: (det1: 0x0, det2: 0x0) 
No(push button.=nothing=) Mouse (934, 602) not in Focus <(x:1002..1086, 
y:616..651) (w:85, h:36)>
 
No mouse events were 
reported.  I was expecting mouse:button:1p and 
mouse:button:1r, but they never showed up.  I 
reran the experiment a few times and got the same 
result.
 
I decided to run Accerciser 
while running this experiment.  I set it up to monitor the same events 
for which my logging app is listening.  Wither Accerciser 
running, every time I ran the experiment the expected mouse events appear, 
both in my logging app and in accerciser.  This caused me to suspect that 
accerciser is setting something up that my logging app is 
not.
 
So next I stopped my 
logging app and just run the experiment with Accerciser monitoring 
events.  When Accerciser is the only app listening for at-spi events, 
it gets the same result as I originally observed: no mouse events are 
reported.
 
Now that I've written all this, 
it seems to me like this could be a bug in at-spi -- I clicked on the 
pushbutton, the associated events should be delivered to all listeners shouldn't 
they?  The pushbutton is clearly getting the "clicked" signal, because it 
is that signal handler that brings up the alert 
dialog.
 
-Sam
 
Here's the Accerciser log 
showing that it doesn't get any mouse events 
either:
 
focus:(0, 0, 
None)   -- clicked on the Terminal app 
to make it active and set up the experiment
    
source: [terminal | Terminal]
    application: [application | 
gnome-terminal]
window:activate(0, 0, Hello World plus)   -- click on pushbutton
    source: [frame 
| Hello World plus]
    application: [application | 
gtk_hello]
window:deactivate(0, 0, user ubuntu8041: 
~/ldtp-1.3.0/src)
    source: [frame | user ubuntu8041: 
~/ldtp-1.3.0/src]
    application: [application | 
gnome-terminal]
window:create(0, 0, Information)
    
source: [alert | Information]
    application: [application | 
gtk_hello]
window:deactivate(0, 0, Hello World plus)
    
source: [frame | Hello World plus]
    application: 
[application | gtk_hello]
window:activate(0, 0, 
Information)
    source: [alert | 
Information]
    application: [application | 
gtk_hello]
focus:(0, 0, None)
    source: [push button | 
No]
    application: [application | 
gtk_hello] 
 
Here is my app's log when the 
mouse events are delivered (the MOUSE events are device 
events):
 
TCF 34:03.390: ev mouse:button:1p (x: 1081, y: 610) main(unknown)
TCF 
34:03.385: ev MOUSE key: 1(), keycode: 1, type: button-pressed, modifiers 0x100 
xxx:1081 yyy:610 []
TCF 34:03.392: ev window:deactivate (det1: 0x0, det2: 
0x0) user ubuntu8041: 
~/ldtp-1.3.0/src(frame)
TCF 34:03.443: ev window:activate (det1: 0x0, det2: 
0x0) Hello World plus(frame)
TCF 34:03.531: ev MOUSE key: 1(), keycode: 1, 
type: button-released, modifiers 0x0 xxx:1081 yyy:610 []
TCF 34:03.539: ev 
mouse:button:1r (x: 1081, y: 610) 
main(unknown)
TCF 34:03.615: ev window:create (det1: 0x0, det2: 0x0) 
Information(alert)
TCF 34:03.635: ev window:deactivate (det1: 0x0, det2: 0x0) 
Hello World plus(frame)
TCF 34:03.638: ev window:activate (det1: 0x0, det2: 
0x0) Information(alert)
TCF 34:03.660: ev focus: (det1: 0x0, det2: 0x0) 
No(push button.=nothing=) Mouse (1081, 610) not in Focus <(x:1186..1270, 
y:626..661) (w:85, h:36)>
 
Here is Accerciser's log when 
the mouse events are delivered.
 
 
window:deactivate(0, 0, 
user ubuntu8041: 
~/ldtp-1.3.0/src)
    source: [frame | 
user ubuntu8041: 
~/ldtp-1.3.0/src]
    application: [application | 
gnome-terminal]
mouse:button:1p(1081, 610, 
None)
    source: [unknown | main]
    
application: None
window:activate(0, 0, Hello World 
plus)
    source: [frame | Hello World 
plus]
    application: [application | gtk_hello]
mouse:button:1r(1081, 610, None)
    
source: [unknown | main]
    application: 
None
window:create(0, 0, Information)
    source: [alert | 
Information]
    application: [application | 
gtk_hello]
window:deactivate(0, 0, Hello World plus)
    
source: [frame | Hello World plus]
    application: 
[application | gtk_hello]
window:activate(0, 0, 
Information)
    source: [alert | 
Information]
    application: [application | 
gtk_hello]
focus:(0, 0, None)
    source: [push button | 
No]
    application: [application | 
gtk_hello]
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]