add restart action

This commit is contained in:
Dana Jansens 2007-06-22 04:04:59 +00:00
parent 5d57a39b70
commit 58d8b90122
5 changed files with 57 additions and 19 deletions

View 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 \

View 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

View file

@ -8,4 +8,5 @@ void action_all_startup()
action_showdesktop_startup();
action_reconfigure_startup();
action_exit_startup();
action_restart_startup();
}

View 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

54
openbox/actions/restart.c Normal file
View file

@ -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;
}