]> Dogcows Code - chaz/openbox/blobdiff - openbox/actions/maximize.c
add max horz/vert actions. add toggle/on/off ability to all the maximize actions.
[chaz/openbox] / openbox / actions / maximize.c
index ebfb1e5c309c586ad3f54a690720f6ec26425efb..cc2d44e253311ddf742b3eb0bb9552e561036137 100644 (file)
@@ -2,8 +2,8 @@
 #include "openbox/client.h"
 
 typedef struct {
-    gboolean vertical;
-    gboolean horizontal;
+    gboolean toggle;
+    gboolean on;
 } Options;
 
 static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node);
@@ -25,13 +25,17 @@ static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node)
     Options *o;
 
     o = g_new0(Options, 1);
-    o->vertical = TRUE;
-    o->horizontal = TRUE;
+    o->toggle = TRUE;
+
+    if ((n = parse_find_node("maximize", 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 ((n = parse_find_node("vertical", node)))
-        o->vertical = parse_bool(doc, n);
-    if ((n = parse_find_node("horizontal", node)))
-        o->horizontal = parse_bool(doc, n);
     return o;
 }
 
@@ -50,14 +54,12 @@ static gboolean run_func(ObActionsData *data, gpointer options)
     if (data->client) {
         actions_client_move(data, TRUE);
 
-        if (o->horizontal && !o->vertical)
-            client_maximize(data->client, !data->client->max_horz, 1);
-        else if (!o->horizontal && o->vertical)
-            client_maximize(data->client, !data->client->max_vert, 2);
-        else if (o->horizontal && o->vertical)
+        if (o->toggle)
             client_maximize(data->client,
                             !data->client->max_horz || !data->client->max_vert,
                             0);
+        else
+            client_maximize(data->client, o->on, 0);
 
         actions_client_move(data, FALSE);
     }
This page took 0.021199 seconds and 4 git commands to generate.