Got questions, comments, patches, etc.?
Contact Jason Woofenden
gitweb
/
dwm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
applied Andreas Amann's netwm_active_window patch, thx
[dwm.git]
/
dwm.c
diff --git
a/dwm.c
b/dwm.c
index
2d44442
..
95571f6
100644
(file)
--- a/
dwm.c
+++ b/
dwm.c
@@
-499,6
+499,7
@@
cleanup(void) {
cleanupmon(mons);
XSync(dpy, False);
XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime);
cleanupmon(mons);
XSync(dpy, False);
XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime);
+ XDeleteProperty(dpy, root, netatom[NetActiveWindow]);
}
void
}
void
@@
-858,8
+859,10
@@
focus(Client *c) {
XSetWindowBorder(dpy, c->win, dc.sel[ColBorder]);
setfocus(c);
}
XSetWindowBorder(dpy, c->win, dc.sel[ColBorder]);
setfocus(c);
}
- else
+ else {
XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
+ XDeleteProperty(dpy, root, netatom[NetActiveWindow]);
+ }
selmon->sel = c;
drawbars();
}
selmon->sel = c;
drawbars();
}
@@
-1261,8
+1264,11
@@
movemouse(const Arg *arg) {
&& (abs(nx - c->x) > snap || abs(ny - c->y) > snap))
togglefloating(NULL);
}
&& (abs(nx - c->x) > snap || abs(ny - c->y) > snap))
togglefloating(NULL);
}
- if(!selmon->lt[selmon->sellt]->arrange || c->isfloating)
+ if(!selmon->lt[selmon->sellt]->arrange || c->isfloating) {
+ if(c->isfullscreen)
+ setfullscreen(c, False);
resize(c, nx, ny, c->w, c->h, True);
resize(c, nx, ny, c->w, c->h, True);
+ }
break;
}
} while(ev.type != ButtonRelease);
break;
}
} while(ev.type != ButtonRelease);
@@
-1397,8
+1403,11
@@
resizemouse(const Arg *arg) {
&& (abs(nw - c->w) > snap || abs(nh - c->h) > snap))
togglefloating(NULL);
}
&& (abs(nw - c->w) > snap || abs(nh - c->h) > snap))
togglefloating(NULL);
}
- if(!selmon->lt[selmon->sellt]->arrange || c->isfloating)
+ if(!selmon->lt[selmon->sellt]->arrange || c->isfloating) {
+ if(c->isfullscreen)
+ setfullscreen(c, False);
resize(c, c->x, c->y, nw, nh, True);
resize(c, c->x, c->y, nw, nh, True);
+ }
break;
}
} while(ev.type != ButtonRelease);
break;
}
} while(ev.type != ButtonRelease);
@@
-1521,8
+1530,12
@@
sendevent(Client *c, Atom proto) {
void
setfocus(Client *c) {
void
setfocus(Client *c) {
- if(!c->neverfocus)
+ if(!c->neverfocus) {
XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);
XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);
+ XChangeProperty(dpy, root, netatom[NetActiveWindow],
+ XA_WINDOW, 32, PropModeReplace,
+ (unsigned char *) &(c->win), 1);
+ }
sendevent(c, wmatom[WMTakeFocus]);
}
sendevent(c, wmatom[WMTakeFocus]);
}
@@
-1744,6
+1757,8
@@
togglefloating(const Arg *arg) {
if(selmon->sel->isfloating)
resize(selmon->sel, selmon->sel->x, selmon->sel->y,
selmon->sel->w, selmon->sel->h, False);
if(selmon->sel->isfloating)
resize(selmon->sel, selmon->sel->x, selmon->sel->y,
selmon->sel->w, selmon->sel->h, False);
+ else if(selmon->sel->isfullscreen)
+ setfullscreen(selmon->sel, False);
arrange(selmon);
}
arrange(selmon);
}
@@
-1778,8
+1793,10
@@
unfocus(Client *c, Bool setfocus) {
return;
grabbuttons(c, False);
XSetWindowBorder(dpy, c->win, dc.norm[ColBorder]);
return;
grabbuttons(c, False);
XSetWindowBorder(dpy, c->win, dc.norm[ColBorder]);
- if(setfocus)
+ if(setfocus) {
XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
+ XDeleteProperty(dpy, root, netatom[NetActiveWindow]);
+ }
}
void
}
void
@@
-2020,7
+2037,6
@@
updatewindowtype(Client *c) {
if(state == netatom[NetWMFullscreen])
setfullscreen(c, True);
if(state == netatom[NetWMFullscreen])
setfullscreen(c, True);
-
if(wtype == netatom[NetWMWindowTypeDialog])
c->isfloating = True;
}
if(wtype == netatom[NetWMWindowTypeDialog])
c->isfloating = True;
}