From: Dana Jansens Date: Fri, 13 Jul 2007 15:18:34 +0000 (-0400) Subject: split shade back into shade/unshade/toggleshade X-Git-Url: https://git.brokenzipper.com/gitweb?a=commitdiff_plain;h=9a0aab8d8d54baed38cdfeb9dcc248232ffa0736;p=chaz%2Fopenbox split shade back into shade/unshade/toggleshade --- diff --git a/openbox/actions/shade.c b/openbox/actions/shade.c index d28f91ed..3b69b2a1 100644 --- a/openbox/actions/shade.c +++ b/openbox/actions/shade.c @@ -1,64 +1,44 @@ #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_shade_startup() { - actions_register("Shade", - setup_func, - free_func, - run_func, - NULL, NULL); + actions_register("Shade", NULL, NULL, run_func_on, NULL, NULL); + actions_register("Unshade", NULL, NULL, run_func_off, NULL, NULL); + actions_register("ToggleShade", 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_shade(data->client, TRUE); + actions_client_move(data, FALSE); } - - return o; + return FALSE; } -static void free_func(gpointer options) +static gboolean run_func_off(ObActionsData *data, gpointer options) { - Options *o = options; - - g_free(o); + if (data->client) { + actions_client_move(data, TRUE); + client_shade(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) - client_shade(data->client, !data->client->shaded); - else - client_shade(data->client, o->on); + client_shade(data->client, !data->client->shaded); actions_client_move(data, FALSE); } - return FALSE; }