diff options
Diffstat (limited to 'client.c')
-rw-r--r-- | client.c | 17 |
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); } |