Browse Source

changed ban/unban implementation to not move the windows anymore, but map/unmap them instead - PLEASE TEST THIS

main
Anselm R. Garbe 17 years ago
parent
commit
a54cf2ecef
4 changed files with 15 additions and 11 deletions
  1. +9
    -8
      client.c
  2. +1
    -1
      config.mk
  3. +1
    -0
      dwm.h
  4. +4
    -2
      event.c

+ 9
- 8
client.c View File

@ -98,10 +98,12 @@ attach(Client *c) {
void void
ban(Client *c) { ban(Client *c) {
if (c->isbanned)
if(c->isbanned)
return; return;
XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
XUnmapWindow(dpy, c->win);
setclientstate(c, IconicState);
c->isbanned = True; c->isbanned = True;
c->unmapped++;
} }
void void
@ -135,7 +137,7 @@ detach(Client *c) {
void void
focus(Client *c) { focus(Client *c) {
if((!c && selscreen)|| (c && !isvisible(c)))
if((!c && selscreen) || (c && !isvisible(c)))
for(c = stack; c && !isvisible(c); c = c->snext); for(c = stack; c && !isvisible(c); c = c->snext);
if(sel && sel != c) { if(sel && sel != c) {
grabbuttons(sel, False); grabbuttons(sel, False);
@ -224,9 +226,7 @@ manage(Window w, XWindowAttributes *wa) {
c->isfloating = (rettrans == Success) || c->isfixed; c->isfloating = (rettrans == Success) || c->isfixed;
attach(c); attach(c);
attachstack(c); attachstack(c);
ban(c);
XMapWindow(dpy, w);
setclientstate(c, NormalState);
c->isbanned = True;
focus(c); focus(c);
lt->arrange(); lt->arrange();
} }
@ -308,9 +308,10 @@ togglefloating(const char *arg) {
void void
unban(Client *c) { unban(Client *c) {
if (!c->isbanned)
if(!c->isbanned)
return; return;
XMoveWindow(dpy, c->win, c->x, c->y);
XMapWindow(dpy, c->win);
setclientstate(c, NormalState);
c->isbanned = False; c->isbanned = False;
} }


+ 1
- 1
config.mk View File

@ -1,5 +1,5 @@
# dwm version # dwm version
VERSION = 4.3
VERSION = 4.4
# Customize below to fit your system # Customize below to fit your system


+ 1
- 0
dwm.h View File

@ -48,6 +48,7 @@ struct Client {
int rx, ry, rw, rh; /* revert geometry */ int rx, ry, rw, rh; /* revert geometry */
int basew, baseh, incw, inch, maxw, maxh, minw, minh; int basew, baseh, incw, inch, maxw, maxh, minw, minh;
int minax, maxax, minay, maxay; int minax, maxax, minay, maxay;
int unmapped;
long flags; long flags;
unsigned int border, oldborder; unsigned int border, oldborder;
Bool isbanned, isfixed, ismax, isfloating; Bool isbanned, isfixed, ismax, isfloating;


+ 4
- 2
event.c View File

@ -336,8 +336,10 @@ unmapnotify(XEvent *e) {
Client *c; Client *c;
XUnmapEvent *ev = &e->xunmap; XUnmapEvent *ev = &e->xunmap;
if((c = getclient(ev->window)))
unmanage(c);
if((c = getclient(ev->window)) && (ev->event == root)) {
if(ev->send_event || c->unmapped-- == 0)
unmanage(c);
}
} }
/* extern */ /* extern */


Loading…
Cancel
Save