JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
added ban() which takes care than a banned window is not banned again... (this reduce...
authorAnselm R. Garbe <arg@suckless.org>
Wed, 14 Feb 2007 13:01:12 +0000 (14:01 +0100)
committerAnselm R. Garbe <arg@suckless.org>
Wed, 14 Feb 2007 13:01:12 +0000 (14:01 +0100)
client.c
config.mk
dwm.h
event.c
view.c

index 486efe9..3505e76 100644 (file)
--- a/client.c
+++ b/client.c
@@ -68,6 +68,14 @@ xerrordummy(Display *dsply, XErrorEvent *ee) {
 /* extern */
 
 void
+ban(Client *c) {
+       if(!c || c->isbanned)
+               return;
+       c->isbanned = True;
+       XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
+}
+
+void
 configure(Client *c) {
        XConfigureEvent ce;
 
@@ -190,7 +198,7 @@ manage(Window w, XWindowAttributes *wa) {
        c->next = clients;
        c->snext = stack;
        stack = clients = c;
-       XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
+       ban(c);
        XMapWindow(dpy, c->win);
        setclientstate(c, NormalState);
        if(isvisible(c))
index 510fd82..d3a6ffd 100644 (file)
--- a/config.mk
+++ b/config.mk
@@ -1,5 +1,5 @@
 # dwm version
-VERSION = 3.5
+VERSION = 3.6
 
 # Customize below to fit your system
 
diff --git a/dwm.h b/dwm.h
index 674ab1e..2969ecb 100644 (file)
--- a/dwm.h
+++ b/dwm.h
@@ -73,7 +73,7 @@ struct Client {
        int minax, minay, maxax, maxay;
        long flags; 
        unsigned int border;
-       Bool isfixed, isfloat, ismax;
+       Bool isbanned, isfixed, isfloat, ismax;
        Bool *tags;
        Client *next;
        Client *prev;
@@ -99,6 +99,7 @@ extern Display *dpy;
 extern Window root, barwin;
 
 /* client.c */
+extern void ban(Client *c);                    /* ban c */
 extern void configure(Client *c);              /* send synthetic configure event */
 extern void focus(Client *c);                  /* focus c, c may be NULL */
 extern Client *getclient(Window w);            /* return client of w */
diff --git a/event.c b/event.c
index bf69d9e..8c8b997 100644 (file)
--- a/event.c
+++ b/event.c
@@ -189,7 +189,7 @@ configurerequest(XEvent *e) {
                                configure(c);
                        resize(c, False);
                        if(!isvisible(c))
-                               XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
+                               ban(c);
                }
                else
                        configure(c);
diff --git a/view.c b/view.c
index 8164446..5c06027 100644 (file)
--- a/view.c
+++ b/view.c
@@ -55,10 +55,12 @@ dofloat(void) {
        Client *c;
 
        for(c = clients; c; c = c->next) {
-               if(isvisible(c))
+               if(isvisible(c)) {
+                       c->isbanned = False;
                        resize(c, True);
+               }
                else
-                       XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
+                       ban(c);
        }
        if(!sel || !isvisible(sel)) {
                for(c = stack; c && !isvisible(c); c = c->snext);
@@ -82,6 +84,7 @@ dotile(void) {
 
        for(i = 0, c = clients; c; c = c->next)
                if(isvisible(c)) {
+                       c->isbanned = False;
                        if(c->isfloat) {
                                resize(c, True);
                                continue;
@@ -108,7 +111,7 @@ dotile(void) {
                        i++;
                }
                else
-                       XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
+                       ban(c);
        if(!sel || !isvisible(sel)) {
                for(c = stack; c && !isvisible(c); c = c->snext);
                focus(c);