applied restack patch of anydot, with slight changes
c95bf3db
1 file(s) · +9 −3
| 164 | 164 | restack(void) { |
|
| 165 | 165 | Client *c; |
|
| 166 | 166 | XEvent ev; |
|
| 167 | + | XWindowChanges wc; |
|
| 167 | 168 | ||
| 168 | 169 | drawstatus(); |
|
| 169 | 170 | if(!sel) |
|
| 171 | 172 | if(sel->isfloating || lt->arrange == floating) |
|
| 172 | 173 | XRaiseWindow(dpy, sel->win); |
|
| 173 | 174 | if(lt->arrange != floating) { |
|
| 174 | - | if(!sel->isfloating) |
|
| 175 | - | XLowerWindow(dpy, sel->win); |
|
| 175 | + | wc.stack_mode = Below; |
|
| 176 | + | wc.sibling = barwin; |
|
| 177 | + | if(!sel->isfloating) { |
|
| 178 | + | XConfigureWindow(dpy, sel->win, CWSibling | CWStackMode, &wc); |
|
| 179 | + | wc.sibling = sel->win; |
|
| 180 | + | } |
|
| 176 | 181 | for(c = nexttiled(clients); c; c = nexttiled(c->next)) { |
|
| 177 | 182 | if(c == sel) |
|
| 178 | 183 | continue; |
|
| 179 | - | XLowerWindow(dpy, c->win); |
|
| 184 | + | XConfigureWindow(dpy, c->win, CWSibling | CWStackMode, &wc); |
|
| 185 | + | wc.sibling = c->win; |
|
| 180 | 186 | } |
|
| 181 | 187 | } |
|
| 182 | 188 | XSync(dpy, False); |
|