From: Dana Jansens Date: Fri, 13 Jul 2007 15:29:00 +0000 (-0400) Subject: split decorations into decorate/undecorate/toggledecorations X-Git-Url: https://git.dogcows.com/gitweb?a=commitdiff_plain;h=ddea4dcedd81d8890f85c4cd49e4c95ee5e8f01b;p=chaz%2Fopenbox split decorations into decorate/undecorate/toggledecorations --- diff --git a/openbox/actions/decorations.c b/openbox/actions/decorations.c index a8f0929c..fa5606d1 100644 --- a/openbox/actions/decorations.c +++ b/openbox/actions/decorations.c @@ -1,62 +1,47 @@ #include "openbox/actions.h" #include "openbox/client.h" -typedef struct { - gboolean toggle; - gboolean on; -} 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); +static gboolean run_func_on(ObActionsData *data, gpointer options); +static gboolean run_func_off(ObActionsData *data, gpointer options); +static gboolean run_func_toggle(ObActionsData *data, gpointer options); void action_decorations_startup() { - actions_register("Decorations", - setup_func, - free_func, - run_func, + actions_register("Decorate", NULL, NULL, run_func_on, NULL, NULL); + actions_register("Undecorate", NULL, NULL, run_func_off, NULL, NULL); + actions_register("ToggleDecorations", NULL, NULL, run_func_toggle, NULL, NULL); } -static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node) +/* Always return FALSE because its not interactive */ +static gboolean run_func_on(ObActionsData *data, gpointer options) { - xmlNodePtr n; - Options *o; - - o = g_new0(Options, 1); - o->toggle = TRUE; - - if ((n = parse_find_node("state", node))) { - gchar *s = parse_string(doc, n); - if (g_ascii_strcasecmp(s, "toggle")) { - o->toggle = FALSE; - o->on = parse_bool(doc, n); - } - g_free(s); + if (data->client) { + actions_client_move(data, TRUE); + client_set_undecorated(data->client, TRUE); + actions_client_move(data, FALSE); } - - return o; + return FALSE; } -static void free_func(gpointer options) +/* Always return FALSE because its not interactive */ +static gboolean run_func_off(ObActionsData *data, gpointer options) { - Options *o = options; - - g_free(o); + if (data->client) { + actions_client_move(data, TRUE); + client_set_undecorated(data->client, FALSE); + actions_client_move(data, FALSE); + } + return FALSE; } /* Always return FALSE because its not interactive */ -static gboolean run_func(ObActionsData *data, gpointer options) +static gboolean run_func_toggle(ObActionsData *data, gpointer options) { - Options *o = options; - if (data->client) { actions_client_move(data, TRUE); - if (o->toggle || o->on != !data->client->undecorated) - client_set_undecorated(data->client, !data->client->undecorated); + client_set_undecorated(data->client, !data->client->undecorated); actions_client_move(data, FALSE); } - return FALSE; }