Bugfix: Correctly set currently_focused when clients are destroyed

This commit is contained in:
Michael Stapelberg 2009-03-05 17:08:57 +01:00
parent 841ad55f4a
commit 76c201f940
1 changed files with 9 additions and 1 deletions

View File

@ -446,8 +446,16 @@ int handle_unmap_notify_event(void *data, xcb_connection_t *conn, xcb_unmap_noti
printf("Removing from focus stack\n");
SLIST_REMOVE(&(con->workspace->focus_stack), client, Client, focus_clients);
/* Remove from currently_focused */
/* Set currently_focused to the next client which will get focus in this
particular container. This does not necessarily correspond with the client
that will be focused next */
con->currently_focused = NULL;
Client *focus_client;
SLIST_FOREACH(focus_client, &(con->workspace->focus_stack), focus_clients)
if (focus_client->container == con) {
con->currently_focused = focus_client;
break;
}
/* Actually set focus, if there is a window which should get it */
if (!SLIST_EMPTY(&(con->workspace->focus_stack)))