On Wed, Mar 01, 2017 at 03:10:48PM -0500, Chris Siebenmann wrote: > > > If you click on the link, it's supposed to print something like: > > > > > > link <gtk.Label object at 0x7f64ef58dd70 (GtkLabel at 0x55f69d5c4d40)> > > > http://gtk.org > > > In a configuration with a Mouse 1 binding that includes the Window > > > context (so W or A), the link can't be activated by clicking mouse-1 > > > and link.py prints nothing. You can however get it to print something > > > by clicking on the link and then hitting Return to activate the link > > > through the keyboard. > > > > Okay, this is reproduceable. I know nothing about python or Gtk+, > > so this may be easy, but here, when you click on the window, xev > > prints no ButtonPress or ButtonRelease events at all neither with > > nor without the binding. Is there a way so that the program > > prints all events it sees? > > I don't know if there's a way to get GTK to do that, but I can > use the blunt hammer of xtrace here: > https://xtrace.alioth.debian.org/ > > Based on this, the link.py script is seeing LeaveNotify and EnterNotify > events before the ButtonPress event. The initial numbers here are > relative time since program start in seconds, and I left the program > idle for several seconds to make sure things would stand out (and indeed > they do): > > 5.042 000:>:0206: Event LeaveNotify(8) detail=Ancestor(0x00) > mode=Grab(0x01) flags=same-screen time=0x05ee50ba root=0x0000026d > event=0x00600003 child=None(0x00000000) root-x=702 root-y=319 event-x=128 > event-y=102 state=Button1 > > [link.py wakes up and wakes a ton of requests and RENDER-Requests] > > 5.043 000:>:0235: Event UnmapNotify(18) event=0x00600043 > window=0x00600043 from-configure=false(0x00) > 5.045 000:>:0235: Event VisibilityNotify(15) window=0x00600003 > state=Unobscured(0x00) > 5.046 000:>:0235: Event Expose(12) window=0x00600003 x=145 y=117 > width=38 height=1 count=0x0004 > 5.046 000:>:0235: Event Expose(12) window=0x00600003 x=144 y=118 > width=40 height=1 count=0x0003 > 5.046 000:>:0235: Event Expose(12) window=0x00600003 x=143 y=119 > width=42 height=33 count=0x0002 > 5.046 000:>:0235: Event Expose(12) window=0x00600003 x=144 y=152 > width=40 height=1 count=0x0001 > 5.046 000:>:0235: Event Expose(12) window=0x00600003 x=145 y=153 > width=38 height=1 count=0x0000 > 5.046 000:>:0235: Event EnterNotify(7) detail=Ancestor(0x00) > mode=Ungrab(0x02) flags=same-screen time=0x05ee50bd root=0x0000026d > event=0x00600003 child=None(0x00000000) root-x=702 root-y=319 event-x=128 > event-y=102 state=Button1 > 5.046 000:>:0235: Event ButtonPress(4) button=left button(0x01) > time=0x05ee50ba root=0x0000026d event=0x00600003 child=None(0x00000000) > root-x=702 root-y=319 event-x=128 event-y=102 state=0 same-screen=true(0x01) > > (Some of those expose events are presumably because of the various > requests and render requests it issued immediately after the LeaveNotify.) > > In looking at this carefully, I did notice another anomaly in link.py's > behavior (which you may have also noticed). When I initially move the > mouse pointer over the actual link, it turns from a plain pointer into > a hand-pointer, presumably to signal that this is a clickable link, and > the program also pops up a tooltip for the link destination. When I > click on the link and nothing happens, this immediately changes back to > the regular pointer; in fact, this change happens on the button press > (which I can see if I click down and hold). This doesn't happen with > working clicks, where a button-press leaves the cursor unchanged. > > I wonder if GTK is (mis-)processing the LeaveNotify here as 'the mouse > pointer is leaving the link', instead of 'mouse has been grabbed from me'.
That's just what I think. The program seems to believe it has lost focus and stops processing button events. Ciao Dominik ^_^ ^_^ -- Dominik Vogt