> The only other reason fvwm grabs a button is for focus handling in
> focus.c:__focus_grab_one_button(). The only possible reason I
> could think of is that the application does not accept focus so
> that grab never gets removed. Have you tried
>
> Style * Lenience
>
> as Dan suggested?
>
> For further debugging, does the problem go away with
>
> style * clicktofocus, clicktofocusraises, ClickToFocusPassesClick
With both 'Style *' settings (and with my usual 'SloppyFocus' setting
commented out), the problem is still there. I also tested with just
'Style * Lenience' and the problem is also still there.
> Unless I have a simple test application and a configuration
> that exhibits that behaviour I cannot do much about it.
> Would you be able to fvwm in Xnest and debug through
> events.c:__handle_bpress_on_managed() to see what actually happens?
The flow appears to be:
__handle_bpress_on_managed()
-> __handle_focus_raise_click()
-> __check_click_to_focus_or_raise()
returning f.do_focus and f.do_raise both 0
f.do_forbid_function is 0, so we check bindings.
-> __handle_bpress_action() which returns false
if (IS_SCHEDULED_FOR_RAISE(fw)) is false; we skip that block
f.do_swallow_click is false, so we call:
XAllowEvents(dpy, ReplayPointer, CurrentTime)
XFlush(dpy)
... and return.
(Let me know if you want more detail somewhere here and I can rerun
my gdb tracing and/or add printfs appropriately.)
Fortunately there is a simple reproduction program mentioned in the
Debian bug, https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=642151
that comes from the Ubuntu compiz bug report. For convenience, I've
put it up as its own (shorter) URL:
https://www.cs.toronto.edu/~cks/tmp/fvwm/link.py
and my fvwmrc:
https://www.cs.toronto.edu/~cks/tmp/fvwm/fvwmrc-2.5
If you have the Python GTK bindings (so that link.py runs at all), it
puts up a label box with an underlined link. 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.
- cks