aboutsummaryrefslogtreecommitdiff
path: root/sway/tree
diff options
context:
space:
mode:
authorBrian Ashworth <bosrsf04@gmail.com>2018-05-12 12:37:48 -0400
committerBrian Ashworth <bosrsf04@gmail.com>2018-05-12 12:37:48 -0400
commite3625d8f337d61c5d2ba1266679b9053168cd0ae (patch)
tree496ed7323dfead9e048a146fcfede4ef255b1a97 /sway/tree
parent3db7fc2bb2c35d545b2a0a72f5554af833bd447f (diff)
downloadsway-e3625d8f337d61c5d2ba1266679b9053168cd0ae.tar.xz
Count descendant views for hide_edge_borders smart
Diffstat (limited to 'sway/tree')
-rw-r--r--sway/tree/container.c14
-rw-r--r--sway/tree/view.c2
2 files changed, 15 insertions, 1 deletions
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];
diff --git a/sway/tree/view.c b/sway/tree/view.c
index c2496f0d..5695a16b 100644
--- a/sway/tree/view.c
+++ b/sway/tree/view.c
@@ -101,7 +101,7 @@ void view_autoconfigure(struct sway_view *view) {
}
struct sway_container *ws = container_parent(view->swayc, C_WORKSPACE);
- int other_views = ws->children->length - 1;
+ int other_views = container_count_descendants_of_type(ws, C_VIEW) - 1;
double x, y, width, height;
x = y = width = height = 0;