diff options
author | Drew DeVault <sir@cmpwn.com> | 2018-08-07 10:27:25 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-07 10:27:25 -0400 |
commit | 84845adb8e60448de1e91633294e31f2030a5038 (patch) | |
tree | 00955b8114f5c960f27e2065a7e8478953ec441b | |
parent | Merge pull request #2430 from ianyfan/socketpath-leaks (diff) | |
parent | Fix infinite loop when focusing sticky containers via workspace command (diff) | |
download | sway-84845adb8e60448de1e91633294e31f2030a5038.tar.gz sway-84845adb8e60448de1e91633294e31f2030a5038.tar.zst sway-84845adb8e60448de1e91633294e31f2030a5038.zip |
Merge pull request #2433 from RyanDwyer/fix-sticky-infinite-loop
Fix infinite loop when focusing sticky containers via workspace command
-rw-r--r-- | sway/tree/workspace.c | 23 |
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 | ||