applied restack patch of anydot, with slight changes
authorAnselm R. Garbe <arg@suckless.org>
Wed, 6 Jun 2007 09:43:14 +0000 (11:43 +0200)
committerAnselm R. Garbe <arg@suckless.org>
Wed, 6 Jun 2007 09:43:14 +0000 (11:43 +0200)
layout.c

index acf0a8e..f8c92ee 100644 (file)
--- a/layout.c
+++ b/layout.c
@@ -164,6 +164,7 @@ void
 restack(void) {
        Client *c;
        XEvent ev;
+       XWindowChanges wc;
 
        drawstatus();
        if(!sel)
@@ -171,12 +172,17 @@ restack(void) {
        if(sel->isfloating || lt->arrange == floating)
                XRaiseWindow(dpy, sel->win);
        if(lt->arrange != floating) {
-               if(!sel->isfloating)
-                       XLowerWindow(dpy, sel->win);
+               wc.stack_mode = Below;
+               wc.sibling = barwin;
+               if(!sel->isfloating) {
+                       XConfigureWindow(dpy, sel->win, CWSibling | CWStackMode, &wc);
+                       wc.sibling = sel->win;
+               }
                for(c = nexttiled(clients); c; c = nexttiled(c->next)) {
                        if(c == sel)
                                continue;
-                       XLowerWindow(dpy, c->win);
+                       XConfigureWindow(dpy, c->win, CWSibling | CWStackMode, &wc);
+                       wc.sibling = c->win;
                }
        }
        XSync(dpy, False);