diff options
-rw-r--r-- | sway/container.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/sway/container.c b/sway/container.c index c3461acb..c588f3db 100644 --- a/sway/container.c +++ b/sway/container.c | |||
@@ -729,14 +729,29 @@ swayc_t *container_find(swayc_t *container, bool (*f)(swayc_t *, const void *), | |||
729 | return NULL; | 729 | return NULL; |
730 | } | 730 | } |
731 | 731 | ||
732 | swayc_t *con; | ||
733 | if (container->type == C_WORKSPACE) { | ||
734 | for (int i = 0; i < container->floating->length; ++i) { | ||
735 | con = container->floating->items[i]; | ||
736 | if (f(con, data)) { | ||
737 | return con; | ||
738 | } | ||
739 | con = container_find(con, f, data); | ||
740 | if (con != NULL) { | ||
741 | return con; | ||
742 | } | ||
743 | } | ||
744 | } | ||
745 | |||
732 | for (int i = 0; i < container->children->length; ++i) { | 746 | for (int i = 0; i < container->children->length; ++i) { |
733 | if (f(container->children->items[i], data)) { | 747 | con = container->children->items[i]; |
734 | return container->children->items[i]; | 748 | if (f(con, data)) { |
749 | return con; | ||
735 | } | 750 | } |
736 | 751 | ||
737 | swayc_t *find = container_find(container->children->items[i], f, data); | 752 | con = container_find(con, f, data); |
738 | if (find != NULL) { | 753 | if (con != NULL) { |
739 | return find; | 754 | return con; |
740 | } | 755 | } |
741 | } | 756 | } |
742 | 757 | ||