diff options
author | Anselm R Garbe <garbeam@gmail.com> | 2008-03-24 13:49:19 +0000 |
---|---|---|
committer | Anselm R Garbe <garbeam@gmail.com> | 2008-03-24 13:49:19 +0000 |
commit | 20cd3360876f551c0f3b4c9c5a827a64b829e6ef (patch) | |
tree | c21d17c8a63c87f3d666215bc804565ed7f7af71 /dwm.c | |
parent | a6a216f28cbc49afaace269c2662382a351fda24 (diff) | |
download | dwm-20cd3360876f551c0f3b4c9c5a827a64b829e6ef.tar.gz |
setlayout and setgeom are now togglable again
Diffstat (limited to 'dwm.c')
-rw-r--r-- | dwm.c | 46 |
1 files changed, 28 insertions, 18 deletions
@@ -322,6 +322,10 @@ buttonpress(XEvent *e) { XButtonPressedEvent *ev = &e->xbutton; if(ev->window == barwin) { + if((ev->x < bgw) && ev->button == Button1) { + setgeom(NULL); + return; + } x = bgw; for(i = 0; i < LENGTH(tags); i++) { x += textw(tags[i]); @@ -341,6 +345,8 @@ buttonpress(XEvent *e) { return; } } + if((ev->x < x + blw) && ev->button == Button1) + setlayout(NULL); } else if((c = getclient(ev->window))) { focus(c); @@ -426,7 +432,7 @@ configurenotify(XEvent *e) { if(ev->window == root && (ev->width != sw || ev->height != sh)) { sw = ev->width; sh = ev->height; - setgeom(NULL); + setgeom(geom->symbol); } } @@ -1417,12 +1423,18 @@ void setgeom(const char *arg) { unsigned int i; - for(i = 0; arg && i < LENGTH(geoms); i++) - if(!strcmp(geoms[i].symbol, arg)) - break; - if(i == LENGTH(geoms)) - return; - geom = &geoms[i]; + if(!arg) { + if(++geom == &geoms[LENGTH(geoms)]) + geom = &geoms[0]; + } + else { + for(i = 0; i < LENGTH(geoms); i++) + if(!strcmp(geoms[i].symbol, arg)) + break; + if(i == LENGTH(geoms)) + return; + geom = &geoms[i]; + } geom->apply(); updatebarpos(); arrange(); @@ -1430,20 +1442,18 @@ setgeom(const char *arg) { void setlayout(const char *arg) { - static Layout *revert = 0; unsigned int i; - if(!arg) - return; - for(i = 0; i < LENGTH(layouts); i++) - if(!strcmp(arg, layouts[i].symbol)) - break; - if(i == LENGTH(layouts)) - return; - if(revert && &layouts[i] == lt) - lt = revert; + if(!arg) { + if(++lt == &layouts[LENGTH(layouts)]) + lt = &layouts[0]; + } else { - revert = lt; + for(i = 0; i < LENGTH(layouts); i++) + if(!strcmp(arg, layouts[i].symbol)) + break; + if(i == LENGTH(layouts)) + return; lt = &layouts[i]; } if(sel) |