all repos — openbox @ cfb33de8bc774c0838a7180f066eccc11b8a41cf

openbox fork - make it a bit more like ryudo

create actions from string in a way that won't crash
Dana Jansens danakj@orodu.net
commit

cfb33de8bc774c0838a7180f066eccc11b8a41cf

parent

4f7a70f9faf58f6dcc5db4684fb1115a7076aef9

1 files changed, 14 insertions(+), 2 deletions(-)

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

@@ -31,6 +31,7 @@ static void actions_definition_ref(ObActionsDefinition *def);

static void actions_definition_unref(ObActionsDefinition *def); static gboolean actions_interactive_begin_act(ObActionsAct *act, guint state); static void actions_interactive_end_act(); +static ObActionsAct* actions_build_act_from_string(const gchar *name); static ObActionsAct *interactive_act = NULL; static guint interactive_initial_state = 0;

@@ -123,7 +124,7 @@ g_free(def);

} } -ObActionsAct* actions_parse_string(const gchar *name) +ObActionsAct* actions_build_act_from_string(const gchar *name) { GSList *it; ObActionsDefinition *def = NULL;

@@ -151,6 +152,17 @@

return act; } +ObActionsAct* actions_parse_string(const gchar *name) +{ + ObActionsAct *act = NULL; + + if ((act = actions_build_act_from_string(name))) + if (act->def->setup) + act->options = act->def->setup(NULL, NULL, NULL); + + return act; +} + ObActionsAct* actions_parse(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node)

@@ -159,7 +171,7 @@ gchar *name;

ObActionsAct *act = NULL; if (parse_attr_string("name", node, &name)) { - if ((act = actions_parse_string(name))) + if ((act = actions_build_act_from_string(name))) /* there is more stuff to parse here */ if (act->def->setup) act->options = act->def->setup(i, doc, node->xmlChildrenNode);