On Wed, Dec 18, 2013 at 04:39:42PM -0500, Dan Espen wrote:
> >> Key (Ardour) B          W M -
> > Idem, that imply the binding was not removed:
> >> [fvwm][__execute_function]: <<ERROR>> No such command 'ToggleFail'
> 
> It's pretty clear to me Fvwm doesn't work as expected when you
> try to remove a binding with '-'.
> During the removal process it should NOT be validating the command
> in the binding.

The algorithm when adding a binding is:

 * Parse the binding and collect info about it in local variables
 * Collect all bindings that are made obsolete by the new binding
   in a list.
 * Ungrab the keys and buttons for the bindings in the remove
   list.
 * Delete the remove list.
 * If the action is just "-" that's all that is to do.
 * Otherwise append the new binding to the list of all bindings.

However, something is going wrong.  With

  key (w1) q w m echo w1
  key (w2) q w m echo w2

both bindings work as expected, but after

  key (w2) q w m -

the w1 binding does not work either.  It turns out that removing
the second binding removes the grab for meta-q on all windows
although it is still needed.

That does not explain the bug described earlier, though.

> > The only way to remove a binding:
> >> Key (Ardour) B          W M
> >> # work
> 
> I don't think that actually works (haven't looked yet).
> It might be setting the binding to an empty command.
> Empty commands are skipped so they appear not to be there.

Looking at the code in ParseBinding, I think fvwm would crash
with a NULL pointer access if the action is omitted.

Ciao

Dominik ^_^  ^_^

-- 

Dominik Vogt

Reply via email to