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.
This commit is contained in:
parent
54b9549713
commit
0ea15ed962
@ -201,12 +201,21 @@ static void workspace_reassign_sticky(Con *con) {
|
|||||||
void workspace_show(const char *num) {
|
void workspace_show(const char *num) {
|
||||||
Con *workspace, *current, *old;
|
Con *workspace, *current, *old;
|
||||||
|
|
||||||
old = con_get_workspace(focused);
|
|
||||||
|
|
||||||
workspace = workspace_get(num);
|
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)
|
if (workspace == old)
|
||||||
return;
|
return;
|
||||||
workspace->fullscreen_mode = CF_OUTPUT;
|
|
||||||
/* disable fullscreen */
|
/* disable fullscreen */
|
||||||
TAILQ_FOREACH(current, &(workspace->parent->nodes_head), nodes)
|
TAILQ_FOREACH(current, &(workspace->parent->nodes_head), nodes)
|
||||||
current->fullscreen_mode = CF_NONE;
|
current->fullscreen_mode = CF_NONE;
|
||||||
|
Loading…
Reference in New Issue
Block a user