On Fri, Sep 12, 2014 at 12:17:44AM +0100, Thomas Adam wrote:
> On Tue, Sep 02, 2014 at 10:58:30PM +0100, Dominik Vogt wrote:
> > On Tue, Sep 02, 2014 at 04:19:33PM -0500, [email protected] wrote:
> > > Log message:
> > > Update passive grabs tracking modifiers
> > > 
> > > In the case of GTK's link widget which doesn't handle passive grabs
> > > following FVWM's window bindings (which assumes the underlying
> > > application can handle a PointerReplay), update the grabs in this
> > > context by always ungrabbing the button and grabbing it for modifiers
> > > other than ALL_MODIFIERS.
> > > 
> > > I've had this in testing for three years and recently dusted it off for a
> > > bug report I received for another application with this problem, called
> > > darktable.
> > 
> > Can you please explain the problem in even more detail?  Grabbing
> > is a crucial part of fvwm that I want to understand completely.
> > (A diff would also be nice for convenience; they're so difficult
> > to get from CVS.)
> 
> I'm so sorry, Dominik.  I have no idea why I didn't see this reply
> sooner.

No problem at all; sooner or later I would have asked again.

>  The specifics of the changes can be found here:
> 
> https://github.com/ThomasAdam/mvwm/commit/46213db4892ea00cfcd5fd421ac82b9a32c074b5

I haven't read that yet, but ...

> The problem (as I can see it) is that fvwm grabs everything.  What I
> noticed with some recent GTK applications is that mouse bindings
> assigned in general to windows were interferring with them in that the
> application couldn't respond to certain things, such as clicking on
> links, etc.

I haven't looked at the binding grab code for ages, but I remember
that I've spent lots of time to minimize the impact of buttons
grabs on the client window.  The code should be like this:

 IF Winodw has ClickToFocus AND Window is not focused
   grab everything
 ELSE IF Window has MouseFocusClickRaises and window may be raised*
   grab everything
 ELSE
   grab only the specific bindings

 *: I'm not sure whether any logic is implemented to determine
    whether a window is raisable.

I guess MouseFocusClickRaises is actually the culprit here.

> So when I looked into this, I tried to change fvwm to only grab the
> things it needed based on the modifiers in use, etc.  But this clearly
> broke a few other things (which I don't use).
> 
> Looking into this further still, it seems Compiz have a similar fix to
> my proposal above:
> 
> http://git.compiz.org/compiz/core/commit/?id=cf2117be87040f5f19be6b688d481f7369b0f7b5

Ciao

Dominik ^_^  ^_^

-- 

Dominik Vogt

Reply via email to