Introduction
Introduction Statistics Contact Development Disclaimer Help
tfixed the layout symbol bug reported by Nibble (but using a different approach…
git clone git://src.adamsgaard.dk/dwm
Log
Files
Refs
README
LICENSE
---
commit 9e8dd3479da9f484c9aa37adcd327989149e89ef
parent 0b72be924d3f0daa63e45a09951d6cb6cc9b335e
Author: Anselm R Garbe <[email protected]>
Date: Sun, 27 Sep 2009 10:31:14 +0100
fixed the layout symbol bug reported by Nibble (but using a different approach …
- optimised drawbar() and arrange() handling for multiple monitors, arrange onl…
- need to release 5.7.1
Diffstat:
M config.mk | 2 +-
M dwm.c | 66 ++++++++++++++++++-----------…
2 files changed, 39 insertions(+), 29 deletions(-)
---
diff --git a/config.mk b/config.mk
t@@ -1,5 +1,5 @@
# dwm version
-VERSION = 5.7
+VERSION = 5.7.1
# Customize below to fit your system
diff --git a/dwm.c b/dwm.c
t@@ -152,7 +152,8 @@ typedef struct {
/* function declarations */
static void applyrules(Client *c);
static Bool applysizehints(Client *c, int *x, int *y, int *w, int *h, Bool int…
-static void arrange(void);
+static void arrange(Monitor *m);
+static void arrangemon(Monitor *m);
static void attach(Client *c);
static void attachstack(Client *c);
static void buttonpress(XEvent *e);
t@@ -379,18 +380,24 @@ applysizehints(Client *c, int *x, int *y, int *w, int *h…
}
void
-arrange(void) {
- Monitor *m;
-
- for(m = mons; m; m = m->next)
+arrange(Monitor *m) {
+ if(m)
+ showhide(m->stack);
+ else for(m = mons; m; m = m->next)
showhide(m->stack);
focus(NULL);
- for(m = mons; m; m = m->next) {
- strncpy(m->ltsymbol, m->lt[m->sellt]->symbol, sizeof m->ltsymb…
- if(m->lt[m->sellt]->arrange)
- m->lt[m->sellt]->arrange(m);
- restack(m);
- }
+ if(m)
+ arrangemon(m);
+ else for(m = mons; m; m = m->next)
+ arrangemon(m);
+}
+
+void
+arrangemon(Monitor *m) {
+ strncpy(m->ltsymbol, m->lt[m->sellt]->symbol, sizeof m->ltsymbol);
+ if(m->lt[m->sellt]->arrange)
+ m->lt[m->sellt]->arrange(m);
+ restack(m);
}
void
t@@ -546,7 +553,7 @@ configurenotify(XEvent *e) {
updatebars();
for(m = mons; m; m = m->next)
XMoveResizeWindow(dpy, m->barwin, m->wx, m->by…
- arrange();
+ arrange(NULL);
}
}
}
t@@ -1139,7 +1146,7 @@ manage(Window w, XWindowAttributes *wa) {
XMoveResizeWindow(dpy, c->win, c->x + 2 * sw, c->y, c->w, c->h); /* so…
XMapWindow(dpy, c->win);
setclientstate(c, NormalState);
- arrange();
+ arrange(c->mon);
}
void
t@@ -1265,7 +1272,7 @@ propertynotify(XEvent *e) {
case XA_WM_TRANSIENT_FOR:
XGetTransientForHint(dpy, c->win, &trans);
if(!c->isfloating && (c->isfloating = (wintoclient(tra…
- arrange();
+ arrange(c->mon);
break;
case XA_WM_NORMAL_HINTS:
updatesizehints(c);
t@@ -1360,7 +1367,7 @@ restack(Monitor *m) {
XEvent ev;
XWindowChanges wc;
- drawbars();
+ drawbar(m);
if(!m->sel)
return;
if(m->sel->isfloating || !m->lt[m->sellt]->arrange)
t@@ -1427,7 +1434,7 @@ sendmon(Client *c, Monitor *m) {
attach(c);
attachstack(c);
focus(NULL);
- arrange();
+ arrange(NULL);
}
void
t@@ -1442,12 +1449,14 @@ void
setlayout(const Arg *arg) {
if(!arg || !arg->v || arg->v != selmon->lt[selmon->sellt])
selmon->sellt ^= 1;
- if(arg && arg->v)
+ if(arg && arg->v) {
selmon->lt[selmon->sellt] = (Layout *)arg->v;
+ strncpy(selmon->ltsymbol, selmon->lt[selmon->sellt]->symbol, s…
+ }
if(selmon->sel)
- arrange();
+ arrange(selmon);
else
- drawbars();
+ drawbar(selmon);
}
/* arg > 1.0 will set mfact absolutly */
t@@ -1461,7 +1470,7 @@ setmfact(const Arg *arg) {
if(f < 0.1 || f > 0.9)
return;
selmon->mfact = f;
- arrange();
+ arrange(selmon);
}
void
t@@ -1558,7 +1567,7 @@ void
tag(const Arg *arg) {
if(selmon->sel && arg->ui & TAGMASK) {
selmon->sel->tags = arg->ui & TAGMASK;
- arrange();
+ arrange(selmon);
}
}
t@@ -1615,7 +1624,7 @@ togglebar(const Arg *arg) {
selmon->showbar = !selmon->showbar;
updatebarpos(selmon);
XMoveResizeWindow(dpy, selmon->barwin, selmon->wx, selmon->by, selmon-…
- arrange();
+ arrange(selmon);
}
void
t@@ -1626,7 +1635,7 @@ togglefloating(const Arg *arg) {
if(selmon->sel->isfloating)
resize(selmon->sel, selmon->sel->x, selmon->sel->y,
selmon->sel->w, selmon->sel->h, False);
- arrange();
+ arrange(selmon);
}
void
t@@ -1638,7 +1647,7 @@ toggletag(const Arg *arg) {
newtags = selmon->sel->tags ^ (arg->ui & TAGMASK);
if(newtags) {
selmon->sel->tags = newtags;
- arrange();
+ arrange(selmon);
}
}
t@@ -1648,7 +1657,7 @@ toggleview(const Arg *arg) {
if(newtagset) {
selmon->tagset[selmon->seltags] = newtagset;
- arrange();
+ arrange(selmon);
}
}
t@@ -1663,6 +1672,7 @@ unfocus(Client *c) {
void
unmanage(Client *c, Bool destroyed) {
+ Monitor *m = c->mon;
XWindowChanges wc;
/* The server grab construct avoids race conditions. */
t@@ -1681,7 +1691,7 @@ unmanage(Client *c, Bool destroyed) {
}
free(c);
focus(NULL);
- arrange();
+ arrange(m);
}
void
t@@ -1908,7 +1918,7 @@ view(const Arg *arg) {
selmon->seltags ^= 1; /* toggle sel tagset */
if(arg->ui & TAGMASK)
selmon->tagset[selmon->seltags] = arg->ui & TAGMASK;
- arrange();
+ arrange(selmon);
}
Client *
t@@ -1986,7 +1996,7 @@ zoom(const Arg *arg) {
detach(c);
attach(c);
focus(c);
- arrange();
+ arrange(c->mon);
}
int
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.