summaryrefslogtreecommitdiff
path: root/openbox/actions
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-07-13 11:29:00 -0400
committerDana Jansens <danakj@orodu.net>2007-07-13 11:29:00 -0400
commitddea4dcedd81d8890f85c4cd49e4c95ee5e8f01b (patch)
tree40f9014b77bd743bd7bd986a57ed10b5b390d38b /openbox/actions
parent6c538915c86b0330bd78e8d8f3e77d78cf0c5680 (diff)
split decorations into decorate/undecorate/toggledecorations
Diffstat (limited to 'openbox/actions')
-rw-r--r--openbox/actions/decorations.c61
1 files changed, 23 insertions, 38 deletions
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;
}