Allow the interactive cancel function to be optional
Dana Jansens danakj@orodu.net
1 files changed,
6 insertions(+),
9 deletions(-)
jump to
M
openbox/actions.c
→
openbox/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(); } }