Xinqi Bao's Git
projects
/
dwm.git
/ blobdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
inline
| side by side
setlayout and setgeom are now togglable again
[dwm.git]
/
dwm.c
diff --git
a/dwm.c
b/dwm.c
index
0e72c47
..
e1c8c20
100644
(file)
--- a/
dwm.c
+++ b/
dwm.c
@@
-322,6
+322,10
@@
buttonpress(XEvent *e) {
XButtonPressedEvent *ev = &e->xbutton;
if(ev->window == barwin) {
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]);
x = bgw;
for(i = 0; i < LENGTH(tags); i++) {
x += textw(tags[i]);
@@
-341,6
+345,8
@@
buttonpress(XEvent *e) {
return;
}
}
return;
}
}
+ if((ev->x < x + blw) && ev->button == Button1)
+ setlayout(NULL);
}
else if((c = getclient(ev->window))) {
focus(c);
}
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;
if(ev->window == root && (ev->width != sw || ev->height != sh)) {
sw = ev->width;
sh = ev->height;
- setgeom(
NULL
);
+ setgeom(
geom->symbol
);
}
}
}
}
@@
-517,9
+523,11
@@
drawbar(void) {
Client *c;
dc.x = 0;
Client *c;
dc.x = 0;
- dc.w = bgw;
- drawtext(geom->symbol, dc.norm, False);
- dc.x += bgw;
+ if(bgw > 0) {
+ dc.w = bgw;
+ drawtext(geom->symbol, dc.norm, False);
+ dc.x += bgw;
+ }
for(c = stack; c && !isvisible(c); c = c->snext);
for(i = 0; i < LENGTH(tags); i++) {
dc.w = textw(tags[i]);
for(c = stack; c && !isvisible(c); c = c->snext);
for(i = 0; i < LENGTH(tags); i++) {
dc.w = textw(tags[i]);
@@
-533,9
+541,13
@@
drawbar(void) {
}
dc.x += dc.w;
}
}
dc.x += dc.w;
}
- dc.w = blw;
- drawtext(lt->symbol, dc.norm, False);
- x = dc.x + dc.w;
+ if(blw > 0) {
+ dc.w = blw;
+ drawtext(lt->symbol, dc.norm, False);
+ x = dc.x + dc.w;
+ }
+ else
+ x = dc.x;
dc.w = textw(stext);
dc.x = bw - dc.w;
if(dc.x < x) {
dc.w = textw(stext);
dc.x = bw - dc.w;
if(dc.x < x) {
@@
-1411,12
+1423,18
@@
void
setgeom(const char *arg) {
unsigned int i;
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();
geom->apply();
updatebarpos();
arrange();
@@
-1424,20
+1442,18
@@
setgeom(const char *arg) {
void
setlayout(const char *arg) {
void
setlayout(const char *arg) {
- static Layout *revert = 0;
unsigned int i;
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 {
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)
lt = &layouts[i];
}
if(sel)
@@
-1502,12
+1518,12
@@
setup(void) {
lt = &layouts[0];
/* init bar */
lt = &layouts[0];
/* init bar */
- for(blw = i = 0; i < LENGTH(layouts); i++) {
+ for(blw = i = 0;
LENGTH(layouts) > 1 &&
i < LENGTH(layouts); i++) {
w = textw(layouts[i].symbol);
if(w > blw)
blw = w;
}
w = textw(layouts[i].symbol);
if(w > blw)
blw = w;
}
- for(bgw = i = 0; i < LENGTH(geoms); i++) {
+ for(bgw = i = 0;
LENGTH(geoms) > 1 &&
i < LENGTH(geoms); i++) {
w = textw(geoms[i].symbol);
if(w > bgw)
bgw = w;
w = textw(geoms[i].symbol);
if(w > bgw)
bgw = w;