X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=dwm.c;h=e288ab666d5ba131edbdfadde8f14cdd06062178;hb=80ee95473b8b2fd44262029d35fe25e175e9765f;hp=4c001fa05a487383bd684db3e7445bea2b32b4bb;hpb=cdb8e274531e5e82818d90e2cc4e3b46e7fe8eb6;p=dwm.git diff --git a/dwm.c b/dwm.c index 4c001fa..e288ab6 100644 --- a/dwm.c +++ b/dwm.c @@ -644,7 +644,7 @@ drawbar(Monitor *m) { } else x = dc.x; - if(m == selmon) { + if(m == selmon) { /* status is only drawn on selected monitor */ dc.w = TEXTW(stext); dc.x = m->ww - dc.w; if(dc.x < x) { @@ -652,20 +652,19 @@ drawbar(Monitor *m) { dc.w = m->ww - x; } drawtext(stext, dc.norm, False); - if((dc.w = dc.x - x) > bh) { - dc.x = x; - if(selmon->sel) { - drawtext(selmon->sel->name, dc.sel, False); - drawsquare(selmon->sel->isfixed, selmon->sel->isfloating, False, dc.sel); - } - else - drawtext(NULL, dc.norm, False); - } } else { + dc.x = m->ww; + } + if((dc.w = dc.x - x) > bh) { dc.x = x; - dc.w = m->ww - x; - drawtext(NULL, dc.norm, False); + if(m->sel) { + col = m == selmon ? dc.sel : dc.norm; + drawtext(m->sel->name, col, False); + drawsquare(m->sel->isfixed, m->sel->isfloating, False, col); + } + else + drawtext(NULL, dc.norm, False); } XCopyArea(dpy, dc.drawable, m->barwin, dc.gc, 0, 0, m->ww, bh, 0, 0); XSync(dpy, False); @@ -763,6 +762,8 @@ focus(Client *c) { XSetWindowBorder(dpy, selmon->sel->win, dc.norm[ColBorder]); } if(c) { + if(c->mon != selmon) + selmon = c->mon; if(c->isurgent) clearurgent(c); detachstack(c); @@ -793,8 +794,12 @@ focusmon(const Arg *arg) { for(i = 0, m = mons; m; m = m->next, i++) if(i == arg->ui) { - selmon = m; - focus(NULL); + if(m->stack) + focus(m->stack); + else { + selmon = m; + focus(NULL); + } drawbars(); break; } @@ -829,12 +834,14 @@ focusstack(const Arg *arg) { Client * getclient(Window w) { - Client *c = NULL; + Client *c; Monitor *m; for(m = mons; m; m = m->next) - for(c = m->clients; c && c->win != w; c = c->next); - return c; + for(c = m->clients; c; c = c->next) + if(c->win == w) + return c; + return NULL; } unsigned long @@ -1726,8 +1733,9 @@ updategeom(void) { /* reassign left over clients of disappeared monitors */ for(tm = mons; tm; tm = tm->next) { - while((c = tm->clients)) { - detach(c); + while(tm->clients) { + c = tm->clients; + tm->clients = c->next; detachstack(c); c->mon = newmons; attach(c);