X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Factions%2Fshade.c;h=502781dd9e34a58739d16d8a66b9ccc38d518776;hb=56fface3a4e2b5970e4867047207da84a58adeb2;hp=d28f91ed8863363c4e0e7c1e3d131625969a760d;hpb=7f50e04925e539dbe28997a6b07369d9f5cb43e3;p=chaz%2Fopenbox diff --git a/openbox/actions/shade.c b/openbox/actions/shade.c index d28f91ed..502781dd 100644 --- a/openbox/actions/shade.c +++ b/openbox/actions/shade.c @@ -1,64 +1,46 @@ #include "openbox/actions.h" #include "openbox/client.h" -typedef struct { - gboolean toggle; - gboolean on; -} 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); -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_shade_startup() +void action_shade_startup(void) { - actions_register("Shade", - setup_func, - free_func, - run_func, - NULL, NULL); + actions_register("Shade", NULL, NULL, run_func_on); + actions_register("Unshade", NULL, NULL, run_func_off); + actions_register("ToggleShade", NULL, NULL, run_func_toggle); } -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) +/* 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_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; }