summaryrefslogtreecommitdiff
path: root/openbox/actions.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-07-11 18:39:47 +0000
committerDana Jansens <danakj@orodu.net>2007-07-11 18:39:47 +0000
commitcfb33de8bc774c0838a7180f066eccc11b8a41cf (patch)
treec4dcf872edb293c1b702c80d05fe438309a455d8 /openbox/actions.c
parent4f7a70f9faf58f6dcc5db4684fb1115a7076aef9 (diff)
create actions from string in a way that won't crash
Diffstat (limited to 'openbox/actions.c')
-rw-r--r--openbox/actions.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/openbox/actions.c b/openbox/actions.c
index 5f146b7e..3bfb3b3f 100644
--- a/openbox/actions.c
+++ b/openbox/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 @@ static void actions_definition_unref(ObActionsDefinition *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 @@ ObActionsAct* actions_parse_string(const gchar *name)
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 @@ ObActionsAct* actions_parse(ObParseInst *i,
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);