Hi, just removed two calls to clearurgent() to make the patch work with 5.4 :)
Valentin
diff -r add6eb26ebaa dwm.c
--- a/dwm.c Sat Dec 20 12:02:14 2008 +0000
+++ b/dwm.c Sun Dec 21 18:39:14 2008 +0100
@@ -240,6 +240,11 @@ static Window root, barwin;
static Window root, barwin;
/* configuration, allows nested code to access above variables */
#include "config.h"
+
+static int curtag = 1, prevtag = 1;
+static Layout *lts[LENGTH(tags) + 1];
+static double mfacts[LENGTH(tags) + 1];
+static Bool showbars[LENGTH(tags) + 1];
/* compile-time check if all tags fit into an unsigned int bit array. */
struct NumTags { char limitexceeded[sizeof(unsigned int) * 8 < LENGTH(tags) ? -1 : 1]; };
@@ -1244,7 +1249,7 @@ setlayout(const Arg *arg) {
if(!arg || !arg->v || arg->v != lt[sellt])
sellt ^= 1;
if(arg && arg->v)
- lt[sellt] = (Layout *)arg->v;
+ lt[sellt] = lts[curtag] = (Layout *)arg->v;
if(sel)
arrange();
else
@@ -1261,7 +1266,7 @@ setmfact(const Arg *arg) {
f = arg->f < 1.0 ? arg->f + mfact : arg->f - 1.0;
if(f < 0.1 || f > 0.9)
return;
- mfact = f;
+ mfact = mfacts[curtag] = f;
arrange();
}
@@ -1309,11 +1314,26 @@ setup(void) {
if(!dc.font.set)
XSetFont(dpy, dc.gc, dc.font.xfont->fid);
+ /* init mfacts */
+ for(i=0; i < LENGTH(tags) + 1 ; i++) {
+ mfacts[i] = mfact;
+ }
+
+ /* init layouts */
+ for(i=0; i < LENGTH(tags) + 1; i++) {
+ lts[i] = &layouts[0];
+ }
+
+
/* init bar */
for(blw = i = 0; LENGTH(layouts) > 1 && i < LENGTH(layouts); i++) {
w = TEXTW(layouts[i].symbol);
blw = MAX(blw, w);
}
+
+ for(i=0; i < LENGTH(tags) + 1; i++) {
+ showbars[i] = showbar;
+ }
wa.override_redirect = 1;
wa.background_pixmap = ParentRelative;
@@ -1434,7 +1454,7 @@ tile(void) {
void
togglebar(const Arg *arg) {
- showbar = !showbar;
+ showbar = showbars[curtag] = !showbar;
updategeom();
updatebar();
arrange();
@@ -1467,9 +1487,23 @@ void
void
toggleview(const Arg *arg) {
unsigned int mask = tagset[seltags] ^ (arg->ui & TAGMASK);
+ unsigned int i;
if(mask) {
+ if(mask == ~0) {
+ prevtag = curtag;
+ curtag = 0;
+ }
+ if(!(mask & 1 << (curtag - 1))) {
+ prevtag = curtag;
+ for (i=0; !(mask & 1 << i); i++);
+ curtag = i + 1;
+ }
tagset[seltags] = mask;
+ lt[sellt] = lts[curtag];
+ mfact = mfacts[curtag];
+ if (showbar != showbars[curtag])
+ togglebar(NULL);
arrange();
}
}
@@ -1644,11 +1678,28 @@ updatewmhints(Client *c) {
void
view(const Arg *arg) {
+ unsigned int i;
if((arg->ui & TAGMASK) == tagset[seltags])
return;
seltags ^= 1; /* toggle sel tagset */
- if(arg->ui & TAGMASK)
+ if(arg->ui & TAGMASK) {
tagset[seltags] = arg->ui & TAGMASK;
+ prevtag = curtag;
+ if(arg->ui == ~0)
+ curtag = 0;
+ else {
+ for (i=0; !(arg->ui & 1 << i); i++);
+ curtag = i + 1;
+ }
+ } else {
+ prevtag= curtag ^ prevtag;
+ curtag^= prevtag;
+ prevtag= curtag ^ prevtag;
+ }
+ lt[sellt]= lts[curtag];
+ mfact = mfacts[curtag];
+ if(showbar != showbars[curtag])
+ togglebar(NULL);
arrange();
}
signature.asc
Description: PGP signature
