diff -r c478383db7c9 -r 30d1302dbe3b client.c --- a/client.c Thu Jul 20 19:09:11 2006 +0200 +++ b/client.c Fri Jul 21 07:37:52 2006 +0200 @@ -476,7 +476,7 @@ void zoom(Arg *arg) { - Client *c; + Client *c, **l; if(!sel) return; @@ -486,6 +486,19 @@ 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); }