]> Dogcows Code - chaz/openbox/commitdiff
add restart action
authorDana Jansens <danakj@orodu.net>
Fri, 22 Jun 2007 04:04:59 +0000 (04:04 +0000)
committerDana Jansens <danakj@orodu.net>
Fri, 22 Jun 2007 04:04:59 +0000 (04:04 +0000)
Makefile.am
openbox/action.c
openbox/actions/all.c
openbox/actions/all.h
openbox/actions/restart.c [new file with mode: 0644]

index 002b50cf56c08a5001ab220d985491441fa3f213..6d58e90ce36f310cb7364c3ddcddc02752854b58 100644 (file)
@@ -160,6 +160,7 @@ openbox_openbox_SOURCES = \
        openbox/actions/execute.c \
        openbox/actions/exit.c \
        openbox/actions/reconfigure.c \
+       openbox/actions/restart.c \
        openbox/actions/showdesktop.c \
        openbox/actions/showmenu.c \
        openbox/actions.c \
index eba3c95a0abedd1e445b5a78c7b26be4447f9d08..0c241b46586ee117c0768d7a226f0e13adf82b3d 100644 (file)
@@ -780,16 +780,6 @@ ActionString actionstrings[] =
         action_desktop_last,
         NULL
     },
-    {
-        "restart",
-        action_restart,
-        NULL
-    },
-    {
-        "exit",
-        action_exit,
-        NULL
-    },
     {
         "sendtotoplayer",
         action_send_to_layer,
@@ -1701,15 +1691,6 @@ void action_resize(union ActionData *data)
     moveresize_start(c, data->any.x, data->any.y, data->any.button, corner);
 }
 
-void action_restart(union ActionData *data)
-{
-    ob_restart_other(data->execute.path);
-}
-
-void action_exit(union ActionData *data)
-{
-}
-
 void action_cycle_windows(union ActionData *data)
 {
     /* if using focus_delay, stop the timer now so that focus doesn't go moving
index 13068b7b6e45d86c861d02a93c3a470980e7749f..141fd12e5401998a1c7d19909dfa7be5b03ac724 100644 (file)
@@ -8,4 +8,5 @@ void action_all_startup()
     action_showdesktop_startup();
     action_reconfigure_startup();
     action_exit_startup();
+    action_restart_startup();
 }
index dadfc3f0ec7eb161c7e1498a58110a01be28b2f9..789cce379b890c44e21e6e3d7767f0644c2db17c 100644 (file)
@@ -9,5 +9,6 @@ void action_showmenu_startup();
 void action_showdesktop_startup();
 void action_reconfigure_startup();
 void action_exit_startup();
+void action_restart_startup();
 
 #endif
diff --git a/openbox/actions/restart.c b/openbox/actions/restart.c
new file mode 100644 (file)
index 0000000..f7f1dfc
--- /dev/null
@@ -0,0 +1,54 @@
+#include "openbox/actions.h"
+#include "openbox/openbox.h"
+
+typedef struct {
+    gchar   *cmd;
+} Options;
+
+static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node);
+static void     free_func(gpointer options);
+static gboolean run_func(ObActionsData *data, gpointer options);
+
+void action_restart_startup()
+{
+    actions_register("Restart",
+                     setup_func,
+                     free_func,
+                     run_func,
+                     NULL, NULL);
+}
+
+static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node)
+{
+    xmlNodePtr n;
+    Options *o;
+
+    o = g_new0(Options, 1);
+
+    if ((n = parse_find_node("execute", node))) {
+        gchar *s = parse_string(doc, n);
+        o->cmd = parse_expand_tilde(s);
+        g_free(s);
+    }
+    return o;
+}
+
+static void free_func(gpointer options)
+{
+    Options *o = options;
+
+    if (o) {
+        g_free(o->cmd);
+        g_free(o);
+    }
+}
+
+/* Always return FALSE because its not interactive */
+static gboolean run_func(ObActionsData *data, gpointer options)
+{
+    Options *o = options;
+
+    ob_restart_other(o->cmd);
+
+    return FALSE;
+}
This page took 0.031835 seconds and 4 git commands to generate.