summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sway/container.c25
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