Xinqi Bao's Git
projects
/
dwm.git
/ commitdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
patch
|
inline
| side by side (parent:
c45d46a
)
implemented nn < n case, k-zed please recheck
author
Anselm R Garbe <
[email protected]
>
Tue, 22 Sep 2009 19:33:42 +0000
(20:33 +0100)
committer
Anselm R Garbe <
[email protected]
>
Tue, 22 Sep 2009 19:33:42 +0000
(20:33 +0100)
dwm.c
patch
|
blob
|
history
diff --git
a/dwm.c
b/dwm.c
index
48f50da
..
5199e71
100644
(file)
--- a/
dwm.c
+++ b/
dwm.c
@@
-158,7
+158,7
@@
static void attachstack(Client *c);
static void buttonpress(XEvent *e);
static void checkotherwm(void);
static void cleanup(void);
static void buttonpress(XEvent *e);
static void checkotherwm(void);
static void cleanup(void);
-static void cleanupmon
s(void
);
+static void cleanupmon
(Monitor *mon
);
static void clearurgent(Client *c);
static void configure(Client *c);
static void configurenotify(XEvent *e);
static void clearurgent(Client *c);
static void configure(Client *c);
static void configurenotify(XEvent *e);
@@
-480,22
+480,25
@@
cleanup(void) {
XFreeCursor(dpy, cursor[CurNormal]);
XFreeCursor(dpy, cursor[CurResize]);
XFreeCursor(dpy, cursor[CurMove]);
XFreeCursor(dpy, cursor[CurNormal]);
XFreeCursor(dpy, cursor[CurResize]);
XFreeCursor(dpy, cursor[CurMove]);
- cleanupmons();
+ while(mons)
+ cleanupmon(mons);
XSync(dpy, False);
XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime);
}
void
XSync(dpy, False);
XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime);
}
void
-cleanupmon
s(void
) {
+cleanupmon
(Monitor *mon
) {
Monitor *m;
Monitor *m;
- while(mons) {
- m = mons->next;
- XUnmapWindow(dpy, mons->barwin);
- XDestroyWindow(dpy, mons->barwin);
- free(mons);
- mons = m;
+ if(mon == mons)
+ mons = mons->next;
+ else {
+ for(m = mons; m && m->next != mon; m = m->next);
+ m->next = mon->next;
}
}
+ XUnmapWindow(dpy, mon->barwin);
+ XDestroyWindow(dpy, mon->barwin);
+ free(mon);
}
void
}
void
@@
-1727,6
+1730,7
@@
updategeom(void) {
#ifdef XINERAMA
if(XineramaIsActive(dpy)) {
int i, j, n, nn;
#ifdef XINERAMA
if(XineramaIsActive(dpy)) {
int i, j, n, nn;
+ Client *c;
Monitor *m;
XineramaScreenInfo *info = XineramaQueryScreens(dpy, &nn);
XineramaScreenInfo *unique = NULL;
Monitor *m;
XineramaScreenInfo *info = XineramaQueryScreens(dpy, &nn);
XineramaScreenInfo *unique = NULL;
@@
-1755,7
+1759,7
@@
updategeom(void) {
|| unique[i].width != m->mw || unique[i].height != m->mh))
{
dirty = True;
|| unique[i].width != m->mw || unique[i].height != m->mh))
{
dirty = True;
- m->num =
unique[i].screen_number
;
+ m->num =
i
;
m->mx = m->wx = unique[i].x_org;
m->my = m->wy = unique[i].y_org;
m->mw = m->ww = unique[i].width;
m->mx = m->wx = unique[i].x_org;
m->my = m->wy = unique[i].y_org;
m->mw = m->ww = unique[i].width;
@@
-1763,10
+1767,22
@@
updategeom(void) {
updatebarpos(m);
}
}
updatebarpos(m);
}
}
- else { /* less monitors available */
- cleanup();
- setup();
- scan();
+ else { /* less monitors available nn < n */
+ for(i = nn; i < n; i++) {
+ for(m = mons; m && m->next; m = m->next);
+ while(m->clients) {
+ dirty = True;
+ c = m->clients;
+ m->clients = c->next;
+ detachstack(c);
+ c->mon = mons;
+ attach(c);
+ attachstack(c);
+ }
+ if(m == selmon)
+ selmon = mons;
+ cleanupmon(m);
+ }
}
free(unique);
}
}
free(unique);
}