fix a problem with workspace switching when the focus got to the target workspace

This could explain some strange effects where workspaces would just stay blank.
We’ll see.
next
Michael Stapelberg 2011-01-08 00:38:10 +01:00
parent 54b9549713
commit 0ea15ed962
1 changed files with 12 additions and 3 deletions

View File

@ -201,12 +201,21 @@ static void workspace_reassign_sticky(Con *con) {
void workspace_show(const char *num) {
Con *workspace, *current, *old;
old = con_get_workspace(focused);
workspace = workspace_get(num);
/* disable fullscreen for the other workspaces and get the workspace we are
* currently on. */
TAILQ_FOREACH(current, &(workspace->parent->nodes_head), nodes) {
if (current->fullscreen_mode == CF_OUTPUT)
old = current;
current->fullscreen_mode = CF_NONE;
}
/* enable fullscreen for the target workspace. If it happens to be the
* same one we are currently on anyways, we can stop here. */
workspace->fullscreen_mode = CF_OUTPUT;
if (workspace == old)
return;
workspace->fullscreen_mode = CF_OUTPUT;
/* disable fullscreen */
TAILQ_FOREACH(current, &(workspace->parent->nodes_head), nodes)
current->fullscreen_mode = CF_NONE;