From e3625d8f337d61c5d2ba1266679b9053168cd0ae Mon Sep 17 00:00:00 2001 From: Brian Ashworth Date: Sat, 12 May 2018 12:37:48 -0400 Subject: Count descendant views for hide_edge_borders smart --- sway/tree/container.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'sway/tree/container.c') diff --git a/sway/tree/container.c b/sway/tree/container.c index db02c69c..c26afdd8 100644 --- a/sway/tree/container.c +++ b/sway/tree/container.c @@ -547,6 +547,20 @@ bool container_has_child(struct sway_container *con, return container_find(con, find_child_func, child); } +int container_count_descendants_of_type(struct sway_container *con, + enum sway_container_type type) { + int children = 0; + if (con->type == type) { + children++; + } else if (con->children) { + for (int i = 0; i < con->children->length; i++) { + struct sway_container *child = con->children->items[i]; + children += container_count_descendants_of_type(child, type); + } + } + return children; +} + void container_damage_whole(struct sway_container *container) { for (int i = 0; i < root_container.children->length; ++i) { struct sway_container *cont = root_container.children->items[i]; -- cgit v1.2.3 From 0f43eac5dcd3650ad7ecf84cf42da902170174e8 Mon Sep 17 00:00:00 2001 From: Brian Ashworth Date: Sat, 12 May 2018 21:19:55 -0400 Subject: Fix recursion when counting descendants of a type --- sway/tree/container.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'sway/tree/container.c') diff --git a/sway/tree/container.c b/sway/tree/container.c index c26afdd8..fc35a81c 100644 --- a/sway/tree/container.c +++ b/sway/tree/container.c @@ -552,7 +552,8 @@ int container_count_descendants_of_type(struct sway_container *con, int children = 0; if (con->type == type) { children++; - } else if (con->children) { + } + if (con->children) { for (int i = 0; i < con->children->length; i++) { struct sway_container *child = con->children->items[i]; children += container_count_descendants_of_type(child, type); -- cgit v1.2.3