tapplied Peter Hartlichs nice interim Xinerama and map fix patches, for debuggi… | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 0de4197cc5e8e81d94d0faffbaf46abab4d44d1a | |
parent a372248b803e92e6e781d26703a7fee96550ef3a | |
Author: [email protected] <unknown> | |
Date: Fri, 29 Jul 2011 20:01:22 +0200 | |
applied Peter Hartlichs nice interim Xinerama and map fix patches, for debuggin… | |
Diffstat: | |
M LICENSE | 7 ++++--- | |
M dwm.c | 12 ++++++++++-- | |
A transient.c | 42 +++++++++++++++++++++++++++++… | |
3 files changed, 56 insertions(+), 5 deletions(-) | |
--- | |
diff --git a/LICENSE b/LICENSE | |
t@@ -1,16 +1,17 @@ | |
MIT/X Consortium License | |
© 2006-2011 Anselm R Garbe <[email protected]> | |
-© 2006-2007 Sander van Dijk <a dot h dot vandijk at gmail dot com> | |
+© 2007-2011 Peter Hartlich <sgkkr at hartlich dot com> | |
+© 2010-2011 Connor Lane Smith <[email protected]> | |
© 2006-2009 Jukka Salmi <jukka at salmi dot ch> | |
© 2007-2009 Premysl Hruby <dfenze at gmail dot com> | |
© 2007-2009 Szabolcs Nagy <nszabolcs at gmail dot com> | |
© 2007-2009 Christof Musik <christof at sendfax dot de> | |
+© 2009 Mate Nagy <mnagy at port70 dot net> | |
© 2007-2008 Enno Gottox Boland <gottox at s01 dot de> | |
-© 2007-2008 Peter Hartlich <sgkkr at hartlich dot com> | |
© 2008 Martin Hurton <martin dot hurton at gmail dot com> | |
© 2008 Neale Pickett <neale dot woozle dot org> | |
-© 2009 Mate Nagy <mnagy at port70 dot net> | |
+© 2006-2007 Sander van Dijk <a dot h dot vandijk at gmail dot com> | |
Permission is hereby granted, free of charge, to any person obtaining a | |
copy of this software and associated documentation files (the "Software"), | |
diff --git a/dwm.c b/dwm.c | |
t@@ -389,7 +389,6 @@ arrange(Monitor *m) { | |
showhide(m->stack); | |
else for(m = mons; m; m = m->next) | |
showhide(m->stack); | |
- focus(NULL); | |
if(m) | |
arrangemon(m); | |
else for(m = mons; m; m = m->next) | |
t@@ -598,6 +597,7 @@ configurenotify(XEvent *e) { | |
updatebars(); | |
for(m = mons; m; m = m->next) | |
XMoveResizeWindow(dpy, m->barwin, m->wx, m->by… | |
+ focus(NULL); | |
arrange(NULL); | |
} | |
} | |
t@@ -1154,9 +1154,13 @@ manage(Window w, XWindowAttributes *wa) { | |
attach(c); | |
attachstack(c); | |
XMoveResizeWindow(dpy, c->win, c->x + 2 * sw, c->y, c->w, c->h); /* so… | |
- XMapWindow(dpy, c->win); | |
setclientstate(c, NormalState); | |
+ if (c->mon == selmon) | |
+ unfocus(selmon->sel, False); | |
+ c->mon->sel = c; | |
arrange(c->mon); | |
+ XMapWindow(dpy, c->win); | |
+ focus(NULL); | |
} | |
void | |
t@@ -1621,6 +1625,7 @@ void | |
tag(const Arg *arg) { | |
if(selmon->sel && arg->ui & TAGMASK) { | |
selmon->sel->tags = arg->ui & TAGMASK; | |
+ focus(NULL); | |
arrange(selmon); | |
} | |
} | |
t@@ -1701,6 +1706,7 @@ toggletag(const Arg *arg) { | |
newtags = selmon->sel->tags ^ (arg->ui & TAGMASK); | |
if(newtags) { | |
selmon->sel->tags = newtags; | |
+ focus(NULL); | |
arrange(selmon); | |
} | |
} | |
t@@ -1711,6 +1717,7 @@ toggleview(const Arg *arg) { | |
if(newtagset) { | |
selmon->tagset[selmon->seltags] = newtagset; | |
+ focus(NULL); | |
arrange(selmon); | |
} | |
} | |
t@@ -1976,6 +1983,7 @@ view(const Arg *arg) { | |
selmon->seltags ^= 1; /* toggle sel tagset */ | |
if(arg->ui & TAGMASK) | |
selmon->tagset[selmon->seltags] = arg->ui & TAGMASK; | |
+ focus(NULL); | |
arrange(selmon); | |
} | |
diff --git a/transient.c b/transient.c | |
t@@ -0,0 +1,42 @@ | |
+/* cc transient.c -o transient -lX11 */ | |
+ | |
+#include <stdlib.h> | |
+#include <unistd.h> | |
+#include <X11/Xlib.h> | |
+#include <X11/Xutil.h> | |
+ | |
+int main(void) { | |
+ Display *d; | |
+ Window r, f, t = None; | |
+ XSizeHints h; | |
+ XEvent e; | |
+ | |
+ d = XOpenDisplay(NULL); | |
+ if (!d) | |
+ exit(1); | |
+ r = DefaultRootWindow(d); | |
+ | |
+ f = XCreateSimpleWindow(d, r, 100, 100, 400, 400, 0, 0, 0); | |
+ h.min_width = h.max_width = h.min_height = h.max_height = 400; | |
+ h.flags = PMinSize | PMaxSize; | |
+ XSetWMNormalHints(d, f, &h); | |
+ XStoreName(d, f, "floating"); | |
+ XMapWindow(d, f); | |
+ | |
+ XSelectInput(d, f, ExposureMask); | |
+ while (1) { | |
+ XNextEvent(d, &e); | |
+ | |
+ if (t == None) { | |
+ sleep(5); | |
+ t = XCreateSimpleWindow(d, r, 50, 50, 100, 100, 0, 0, … | |
+ XSetTransientForHint(d, t, f); | |
+ XStoreName(d, t, "transient"); | |
+ XMapWindow(d, t); | |
+ XSelectInput(d, t, ExposureMask); | |
+ } | |
+ } | |
+ | |
+ XCloseDisplay(d); | |
+ exit(0); | |
+} |