JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
some more refactoring
[dwm.git] / view.c
diff --git a/view.c b/view.c
index 72aa04e..4781b4e 100644 (file)
--- a/view.c
+++ b/view.c
@@ -8,14 +8,17 @@
 void (*arrange)(void) = DEFMODE;
 
 void
-detach(Client *c) {
-       if(c->prev)
-               c->prev->next = c->next;
-       if(c->next)
-               c->next->prev = c->prev;
-       if(c == clients)
-               clients = c->next;
-       c->next = c->prev = NULL;
+attach(Client *c) {
+       if(clients)
+               clients->prev = c;
+       c->next = clients;
+       clients = c;
+}
+
+void
+attachstack(Client *c) {
+       c->snext = stack;
+       stack = c;
 }
 
 void
@@ -42,6 +45,24 @@ dofloat(void) {
 }
 
 void
+detach(Client *c) {
+       if(c->prev)
+               c->prev->next = c->next;
+       if(c->next)
+               c->next->prev = c->prev;
+       if(c == clients)
+               clients = c->next;
+       c->next = c->prev = NULL;
+}
+
+void
+detachstack(Client *c) {
+       Client **tc;
+       for(tc=&stack; *tc && *tc != c; tc=&(*tc)->snext);
+       *tc = c->snext;
+}
+
+void
 focusnext(Arg *arg) {
        Client *c;
    
@@ -73,6 +94,16 @@ focusprev(Arg *arg) {
        }
 }
 
+Client *
+getclient(Window w) {
+       Client *c;
+
+       for(c = clients; c; c = c->next)
+               if(c->win == w)
+                       return c;
+       return NULL;
+}
+
 Bool
 isvisible(Client *c) {
        unsigned int i;