summaryrefslogtreecommitdiff
path: root/client.c
diff options
context:
space:
mode:
Diffstat (limited to 'client.c')
-rw-r--r--client.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/client.c b/client.c
index 4afa705..c20c517 100644
--- a/client.c
+++ b/client.c
@@ -476,7 +476,7 @@ unmanage(Client *c)
void
zoom(Arg *arg)
{
- Client *c;
+ Client *c, **l;
if(!sel)
return;
@@ -486,6 +486,19 @@ zoom(Arg *arg)
sel = c;
}
- pop(sel);
+ /* pop */
+ for(l = &clients; *l && *l != sel; l = &(*l)->next);
+ if(sel->prev)
+ sel->prev->next = sel->next;
+ if(sel->next)
+ sel->next->prev = sel->prev;
+ *l = sel->next;
+
+ sel->prev = NULL;
+ if(clients)
+ clients->prev = sel;
+ sel->next = clients;
+ clients = sel;
+ arrange(NULL);
focus(sel);
}