dwm

my fork of dwm
Index Commits Files Refs README LICENSE
commit 879241c05cbf959304a2dc4f2fabcdcecaea5092
parent 3794c6294535518fdcdf2ceb434875584189aa1e
Author: Anselm R. Garbe <arg@suckless.org>
Date:   Mon, 19 Feb 2007 18:33:15 +0100

replaced togglelayout with setlayout
Diffstat:
Mconfig.arg.h | 2+-
Mconfig.default.h | 6+++---
Mdwm.h | 2+-
Mevent.c | 3++-
Mscreen.c | 37++++++++++++++++++++++---------------
5 files changed, 29 insertions(+), 21 deletions(-)
diff --git a/config.arg.h b/config.arg.h
@@ -63,7 +63,7 @@ static Key key[] = { \
     { MODKEY|ControlMask|ShiftMask,    XK_8,        toggletag,    { .i = 7 } }, \
     { MODKEY|ControlMask|ShiftMask,    XK_9,        toggletag,    { .i = 8 } }, \
     { MODKEY|ShiftMask,        XK_c,        killclient,    { 0 } }, \
-    { MODKEY,            XK_space,    togglelayout,    { 0 } }, \
+    { MODKEY,            XK_space,    setlayout,    { .i = -1 } }, \
     { MODKEY|ShiftMask,        XK_space,    toggleversatile,{ 0 } }, \
     { MODKEY,            XK_0,        view,        { .i = -1 } }, \
     { MODKEY,            XK_1,        view,        { .i = 0 } }, \
diff --git a/config.default.h b/config.default.h
@@ -58,8 +58,8 @@ static Key key[] = { \
     { MODKEY|ControlMask|ShiftMask,    XK_8,        toggletag,    { .i = 7 } }, \
     { MODKEY|ControlMask|ShiftMask,    XK_9,        toggletag,    { .i = 8 } }, \
     { MODKEY|ShiftMask,        XK_c,        killclient,    { 0 } }, \
-    { MODKEY,            XK_space,    togglelayout,    { 0 } }, \
-    { MODKEY|ShiftMask,        XK_space,    toggleversatile    { 0 } }, \
+    { MODKEY,            XK_space,    setlayout,    { .i = -1 } }, \
+    { MODKEY|ShiftMask,        XK_space,    toggleversatile,{ 0 } }, \
     { MODKEY,            XK_0,        view,        { .i = -1 } }, \
     { MODKEY,            XK_1,        view,        { .i = 0 } }, \
     { MODKEY,            XK_2,        view,        { .i = 1 } }, \
@@ -86,7 +86,7 @@ static Key key[] = { \
  * xprop | awk -F '"' '/^WM_CLASS/ { printf("%s:%s:",$4,$2) }; /^WM_NAME/ { printf("%s\n",$2) }' */
 #define RULES \
 static Rule rule[] = { \
-    /* class:instance:title regex    tags regex    versatile */ \
+    /* class:instance:title regex    tags regex    isversatile */ \
     { "Gimp",            NULL,        True }, \
     { "MPlayer",            NULL,        True }, \
     { "Acroread",            NULL,        True }, \
diff --git a/dwm.h b/dwm.h
@@ -134,10 +134,10 @@ extern void initlayouts(void);			/* initialize layout array */
 extern Bool isvisible(Client *c);        /* returns True if client is visible */
 extern void resizemaster(Arg *arg);        /* resizes the master percent with arg's index value */
 extern void restack(void);            /* restores z layers of all clients */
+extern void setlayout(Arg *arg);        /* sets layout, -1 toggles */
 extern void settags(Client *c, Client *trans);    /* sets tags of c */
 extern void tag(Arg *arg);            /* tags c with arg's index */
 extern void toggleversatile(Arg *arg);        /* toggles focusesd client between versatile/and non-versatile state */
-extern void togglelayout(Arg *arg);        /* toggles layout */
 extern void toggletag(Arg *arg);        /* toggles c tags with arg's index */
 extern void toggleview(Arg *arg);        /* toggles the tag with arg's index (in)visible */
 extern void versatile(void);            /* arranges all windows versatile */
diff --git a/event.c b/event.c
@@ -140,7 +140,8 @@ buttonpress(XEvent *e) {
         if(ev->x < x + blw)
             switch(ev->button) {
             case Button1:
-                togglelayout(NULL);
+                a.i = -1;
+                setlayout(&a);
                 break;
             case Button4:
                 a.i = 1;
diff --git a/screen.c b/screen.c
@@ -191,6 +191,28 @@ restack(void) {
 }
 
 void
+setlayout(Arg *arg) {
+    unsigned int i;
+
+    if(arg->i == -1) {
+        for(i = 0; i < nlayouts && lt != &layout[i]; i++);
+        if(i == nlayouts - 1)
+            lt = &layout[0];
+        else
+            lt = &layout[++i];
+    }
+    else {
+        if(arg->i < 0 || arg->i >= nlayouts)
+            return;
+        lt = &layout[arg->i];
+    }
+    if(sel)
+        lt->arrange();
+    else
+        drawstatus();
+}
+
+void
 settags(Client *c, Client *trans) {
     char prop[512];
     unsigned int i, j;
@@ -253,21 +275,6 @@ toggletag(Arg *arg) {
 }
 
 void
-togglelayout(Arg *arg) {
-    unsigned int i;
-
-    for(i = 0; i < nlayouts && lt != &layout[i]; i++);
-    if(i == nlayouts - 1)
-        lt = &layout[0];
-    else
-        lt = &layout[++i];
-    if(sel)
-        lt->arrange();
-    else
-        drawstatus();
-}
-
-void
 toggleversatile(Arg *arg) {
     if(!sel || lt->arrange == versatile)
         return;