all repos — openbox @ 53430914f0ac7e4e06a484d1fa3b0cf6a79df60b

openbox fork - make it a bit more like ryudo

set the interactive action to NULL before doing its cleanup phase

if the cleanup ends up cancelling the "current interactive action", it would
cause the end function to be called again, which sucks.  for instance if the
cleanup function uses the Focus action. this prevents the unwanted loop
into the interactive action cleanup.
Dana Jansens danakj@orodu.net
commit

53430914f0ac7e4e06a484d1fa3b0cf6a79df60b

parent

9a826d8c3d61150ddd72c621aab870d4bfe4594f

1 files changed, 10 insertions(+), 4 deletions(-)

jump to
M openbox/actions.copenbox/actions.c

@@ -383,13 +383,19 @@

static void actions_interactive_end_act(void) { if (interactive_act) { + ObActionsAct *ia = interactive_act; + + /* set this to NULL first so the i_post() function can't cause this to + get called again (if it decides it wants to cancel any ongoing + interactive action). */ + interactive_act = NULL; + ungrab_keyboard(); - if (interactive_act->i_post) - interactive_act->i_post(interactive_act->options); + if (ia->i_post) + ia->i_post(ia->options); - actions_act_unref(interactive_act); - interactive_act = NULL; + actions_act_unref(ia); } }