Xinqi Bao's Git
projects
/
dwm.git
/ blobdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
inline
| side by side
fixed focusmon brokeness
[dwm.git]
/
dwm.c
diff --git
a/dwm.c
b/dwm.c
index
d3169be
..
096895c
100644
(file)
--- a/
dwm.c
+++ b/
dwm.c
@@
-1,4
+1,4
@@
-#define XINULATOR /* debug, simulates dual head */
+
//
#define XINULATOR /* debug, simulates dual head */
/* See LICENSE file for copyright and license details.
*
* dynamic window manager is designed like any other X client as well. It is
/* See LICENSE file for copyright and license details.
*
* dynamic window manager is designed like any other X client as well. It is
@@
-400,12
+400,9
@@
buttonpress(XEvent *e) {
for(m = mons; m; m = m->next)
if(ev->window == m->barwin) {
if(m != selmon) {
for(m = mons; m; m = m->next)
if(ev->window == m->barwin) {
if(m != selmon) {
- if(selmon->stack)
- focus(selmon->stack);
- else {
- selmon = m;
- focus(NULL);
- }
+ unfocus(selmon->stack);
+ selmon = m;
+ focus(NULL);
}
break;
}
}
break;
}
@@
-807,13
+804,11
@@
focusmon(const Arg *arg) {
for(i = 0, m = mons; m; m = m->next, i++)
if(i == arg->ui) {
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;
}
drawbars();
break;
}
@@
-1505,10
+1500,10
@@
tagmon(const Arg *arg) {
detach(c);
detachstack(c);
c->mon = m;
detach(c);
detachstack(c);
c->mon = m;
+ c->tags = m->tagset[m->seltags]; /* assign tags of target monitor */
attach(c);
attachstack(c);
attach(c);
attachstack(c);
- selmon->sel = selmon->stack;
- m->sel = c;
+ focus(NULL);
arrange();
break;
}
arrange();
break;
}
@@
-1608,6
+1603,7
@@
unfocus(Client *c) {
return;
grabbuttons(c, False);
XSetWindowBorder(dpy, c->win, dc.norm[ColBorder]);
return;
grabbuttons(c, False);
XSetWindowBorder(dpy, c->win, dc.norm[ColBorder]);
+ XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
}
void
}
void
@@
-1622,7
+1618,10
@@
unmanage(Client *c) {
detach(c);
detachstack(c);
if(c->mon->sel == 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);
focus(NULL);
}
XUngrabButton(dpy, AnyButton, AnyModifier, c->win);