> 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

Reply via email to