all repos — openbox @ 1b392b5fbe85c55cda2b0fc9d1e10cbe56216185

openbox fork - make it a bit more like ryudo

Allow the interactive cancel function to be optional
Dana Jansens danakj@orodu.net
commit

1b392b5fbe85c55cda2b0fc9d1e10cbe56216185

parent

82ac248145de5f62e13ca5645dbf827c27b4a2da

1 files changed, 6 insertions(+), 9 deletions(-)

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

@@ -186,14 +186,12 @@ ObActionsAct *act = NULL;

if ((act = actions_build_act_from_string(name))) { if (act->def->canbeinteractive) { - if (act->def->setup.i) { + if (act->def->setup.i) act->options = act->def->setup.i(NULL, &act->i_pre, &act->i_input, &act->i_cancel, &act->i_post); - g_assert(!!act->i_input == !!act->i_cancel); - } } else { if (act->def->setup.n)

@@ -214,14 +212,12 @@ if (obt_parse_attr_string(node, "name", &name)) {

if ((act = actions_build_act_from_string(name))) { /* there is more stuff to parse here */ if (act->def->canbeinteractive) { - if (act->def->setup.i) { + if (act->def->setup.i) act->options = act->def->setup.i(node->children, &act->i_pre, &act->i_input, &act->i_cancel, &act->i_post); - g_assert(!!act->i_input == !!act->i_cancel); - } } else { if (act->def->setup.n)

@@ -236,7 +232,7 @@ }

gboolean actions_act_is_interactive(ObActionsAct *act) { - return act->i_cancel != NULL; + return act->i_input != NULL; } void actions_act_ref(ObActionsAct *act)

@@ -320,7 +316,7 @@ if (actions_act_is_interactive(act))

actions_interactive_end_act(); } else { /* make sure its interactive if it returned TRUE */ - g_assert(act->i_cancel); + g_assert(act->i_input); /* no actions are run after the interactive one */ break;

@@ -337,7 +333,8 @@

void actions_interactive_cancel_act(void) { if (interactive_act) { - interactive_act->i_cancel(interactive_act->options); + if (interactive_act->i_cancel) + interactive_act->i_cancel(interactive_act->options); actions_interactive_end_act(); } }