From 0faf031150ada97e9c2fb4a9f072dc5a45af9b2a Mon Sep 17 00:00:00 2001 From: Martin Duquesnoy Date: Sat, 28 Mar 2009 15:12:47 +0100 Subject: [PATCH] Client: When a client is deleted, his previous client take the focus. --- src/client.c | 11 +++++++++++ src/menu.c | 1 - 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/client.c b/src/client.c index 97bf81a..53a542f 100644 --- a/src/client.c +++ b/src/client.c @@ -696,6 +696,8 @@ client_unhide(Client *c) void client_unmanage(Client *c) { + Client *c_next = NULL; + XGrabServer(dpy); XSetErrorHandler(errorhandlerdummy); XReparentWindow(dpy, c->win, ROOT, c->geo.x, c->geo.y); @@ -712,6 +714,15 @@ client_unmanage(Client *c) ewmh_get_client_list(); arrange(c->screen); XFree(c->title); + + /* To focus the previous client */ + for(c_next = clients; + c_next && c_next != c->prev && c_next->tag != c->tag && c_next->screen != c->screen; + c_next = c_next->next); + + if(c_next && c_next->tag == seltag[selscreen] && c_next->screen == selscreen) + client_focus(c_next); + free(c); return; diff --git a/src/menu.c b/src/menu.c index 831830a..81691ee 100644 --- a/src/menu.c +++ b/src/menu.c @@ -245,7 +245,6 @@ uicb_menu(uicb_t cmd) x = sgeo[selscreen].x + conf.menu[i].x; y = sgeo[selscreen].y + conf.menu[i].y; } - menu_draw(conf.menu[i], x, y); }