X-Git-Url: https://jasonwoof.com/gitweb/?p=dwm.git;a=blobdiff_plain;f=dwm.c;h=096895c4617019542c64886f0d25a8c659e84f49;hp=e3afc9a5cff2d8a2114694b939d085b4a9b78af7;hb=64674c395b89f8d9640163cdcf9c8f4e25ba0e9c;hpb=a2a359097922111d13a1db7fd3da132cad84deaa diff --git a/dwm.c b/dwm.c index e3afc9a..096895c 100644 --- a/dwm.c +++ b/dwm.c @@ -804,13 +804,11 @@ focusmon(const Arg *arg) { for(i = 0, m = mons; m; m = m->next, i++) if(i == arg->ui) { - if(m->stack) - focus(m->stack); - else { - unfocus(selmon->stack); - selmon = m; - focus(NULL); - } + if(m == selmon) + return; + unfocus(selmon->sel); + selmon = m; + focus(NULL); drawbars(); break; } @@ -1502,10 +1500,10 @@ tagmon(const Arg *arg) { detach(c); detachstack(c); c->mon = m; + c->tags = m->tagset[m->seltags]; /* assign tags of target monitor */ attach(c); attachstack(c); - selmon->sel = selmon->stack; - m->sel = c; + focus(NULL); arrange(); break; } @@ -1620,7 +1618,10 @@ unmanage(Client *c) { detach(c); detachstack(c); if(c->mon->sel == c) { - c->mon->sel = c->mon->stack; + /* TODO: consider separate the next code into a function or into detachstack? */ + Client *tc; + for(tc = c->mon->stack; tc && !ISVISIBLE(tc); tc = tc->snext); + c->mon->sel = tc; focus(NULL); } XUngrabButton(dpy, AnyButton, AnyModifier, c->win);