add the cyclewindows action
[mikachu/openbox.git] / openbox / actions.c
index 44a39cb..b56d834 100644 (file)
@@ -83,14 +83,15 @@ gboolean actions_register(const gchar *name,
     GSList *it;
     ObActionsDefinition *def;
 
+    g_assert(run != NULL);
+    g_assert((i_input == NULL) == (i_cancel == NULL));
+
     for (it = registered; it; it = g_slist_next(it)) {
         def = it->data;
         if (!g_ascii_strcasecmp(name, def->name)) /* already registered */
             return FALSE;
     }
 
-    g_assert((i_input == NULL) == (i_cancel == NULL));
-
     def = g_new(ObActionsDefinition, 1);
     def->ref = 1;
     def->name = g_strdup(name);
@@ -156,7 +157,8 @@ ObActionsAct* actions_parse(ObParseInst *i,
     if (parse_attr_string("name", node, &name)) {
         if ((act = actions_parse_string(name)))
             /* there is more stuff to parse here */
-            act->options = act->def->setup(i, doc, node->xmlChildrenNode);
+            if (act->def->setup)
+                act->options = act->def->setup(i, doc, node->xmlChildrenNode);
 
         g_free(name);
     }
@@ -178,7 +180,8 @@ void actions_act_unref(ObActionsAct *act)
 {
     if (act && --act->ref == 0) {
         /* free the action specific options */
-        act->def->free(act->options);
+        if (act->def->free)
+            act->def->free(act->options);
         /* unref the definition */
         actions_definition_unref(act->def);
         g_free(act);
@@ -187,7 +190,6 @@ void actions_act_unref(ObActionsAct *act)
 
 static void actions_setup_data(ObActionsData *data,
                                ObUserAction uact,
-                               Time time,
                                guint state,
                                gint x,
                                gint y,
@@ -195,7 +197,6 @@ static void actions_setup_data(ObActionsData *data,
                                struct _ObClient *client)
 {
     data->uact = uact;
-    data->time = time;
     data->state = state;
     data->x = x;
     data->y = y;
@@ -205,7 +206,6 @@ static void actions_setup_data(ObActionsData *data,
 
 void actions_run_acts(GSList *acts,
                       ObUserAction uact,
-                      Time time,
                       guint state,
                       gint x,
                       gint y,
@@ -227,7 +227,7 @@ void actions_run_acts(GSList *acts,
         ObActionsAct *act = it->data;
         gboolean ok = TRUE;
 
-        actions_setup_data(&data, uact, time, state, x, y, con, client);
+        actions_setup_data(&data, uact, state, x, y, con, client);
 
         if (actions_act_is_interactive(act) &&
             (!interactive_act || interactive_act->def != act->def))