Bugfix: Unset fullscreen_client when closed

This commit is contained in:
Michael Stapelberg 2009-02-26 01:10:41 +01:00
parent 1335e4a4c9
commit aea8cb9c25
1 changed files with 10 additions and 0 deletions

View File

@ -336,9 +336,19 @@ int handle_unmap_notify_event(void *data, xcb_connection_t *c, xcb_unmap_notify_
Client *to_focus = CIRCLEQ_NEXT_OR_NULL(&(client->container->clients), client, clients); Client *to_focus = CIRCLEQ_NEXT_OR_NULL(&(client->container->clients), client, clients);
if (to_focus == NULL) if (to_focus == NULL)
to_focus = CIRCLEQ_PREV_OR_NULL(&(client->container->clients), client, clients); to_focus = CIRCLEQ_PREV_OR_NULL(&(client->container->clients), client, clients);
/* Set focus in data structure to the next/previous window, if any (else NULL) */
if (client->container->currently_focused == client) if (client->container->currently_focused == client)
client->container->currently_focused = to_focus; client->container->currently_focused = to_focus;
/* If this was the fullscreen client, we need to unset it */
if (client->container->workspace->fullscreen_client == client)
client->container->workspace->fullscreen_client = NULL;
/* Remove the client from the list of clients */
CIRCLEQ_REMOVE(&(client->container->clients), client, clients); CIRCLEQ_REMOVE(&(client->container->clients), client, clients);
/* Actually set focus, if there is a window which should get it */
if (to_focus != NULL) if (to_focus != NULL)
set_focus(c, to_focus); set_focus(c, to_focus);
} }