aboutsummaryrefslogtreecommitdiffstats
path: root/sway/tree/workspace.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/tree/workspace.c')
-rw-r--r--sway/tree/workspace.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/sway/tree/workspace.c b/sway/tree/workspace.c
index 3fcad631..395c6c10 100644
--- a/sway/tree/workspace.c
+++ b/sway/tree/workspace.c
@@ -411,17 +411,20 @@ bool workspace_switch(struct sway_container *workspace,
411 struct sway_container *floating = 411 struct sway_container *floating =
412 next_output_prev_ws->sway_workspace->floating; 412 next_output_prev_ws->sway_workspace->floating;
413 bool has_sticky = false; 413 bool has_sticky = false;
414 for (int i = 0; i < floating->children->length; ++i) { 414 if (workspace != next_output_prev_ws) {
415 struct sway_container *floater = floating->children->items[i]; 415 for (int i = 0; i < floating->children->length; ++i) {
416 if (floater->is_sticky) { 416 struct sway_container *floater = floating->children->items[i];
417 has_sticky = true; 417 if (floater->is_sticky) {
418 container_remove_child(floater); 418 has_sticky = true;
419 container_add_child(workspace->sway_workspace->floating, floater); 419 container_remove_child(floater);
420 if (floater == focus) { 420 container_add_child(workspace->sway_workspace->floating,
421 seat_set_focus(seat, NULL); 421 floater);
422 seat_set_focus(seat, floater); 422 if (floater == focus) {
423 seat_set_focus(seat, NULL);
424 seat_set_focus(seat, floater);
425 }
426 --i;
423 } 427 }
424 --i;
425 } 428 }
426 } 429 }
427 430