about summary refs log tree commit diff stats
path: root/view.c
diff options
context:
space:
mode:
Diffstat (limited to 'view.c')
-rw-r--r--view.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/view.c b/view.c
index cd07b94..4781b4e 100644
--- a/view.c
+++ b/view.c
@@ -8,6 +8,20 @@
 void (*arrange)(void) = DEFMODE;
 
 void
+attach(Client *c) {
+	if(clients)
+		clients->prev = c;
+	c->next = clients;
+	clients = c;
+}
+
+void
+attachstack(Client *c) {
+	c->snext = stack;
+	stack = c;
+}
+
+void
 dofloat(void) {
 	Client *c;
 
@@ -31,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;
    
@@ -62,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;