diff options
-rw-r--r-- | include/sway/tree/container.h | 3 | ||||
-rw-r--r-- | sway/desktop/output.c | 8 | ||||
-rw-r--r-- | sway/tree/container.c | 14 | ||||
-rw-r--r-- | sway/tree/view.c | 2 |
4 files changed, 22 insertions, 5 deletions
diff --git a/include/sway/tree/container.h b/include/sway/tree/container.h index 61ab7ca1..ec9e2385 100644 --- a/include/sway/tree/container.h +++ b/include/sway/tree/container.h | |||
@@ -187,6 +187,9 @@ bool container_has_anscestor(struct sway_container *container, | |||
187 | bool container_has_child(struct sway_container *con, | 187 | bool container_has_child(struct sway_container *con, |
188 | struct sway_container *child); | 188 | struct sway_container *child); |
189 | 189 | ||
190 | int container_count_descendants_of_type(struct sway_container *con, | ||
191 | enum sway_container_type type); | ||
192 | |||
190 | void container_create_notify(struct sway_container *container); | 193 | void container_create_notify(struct sway_container *container); |
191 | 194 | ||
192 | void container_damage_whole(struct sway_container *container); | 195 | void container_damage_whole(struct sway_container *container); |
diff --git a/sway/desktop/output.c b/sway/desktop/output.c index c3bff03d..b99e9a91 100644 --- a/sway/desktop/output.c +++ b/sway/desktop/output.c | |||
@@ -322,8 +322,8 @@ static void render_container_simple_border_normal(struct sway_output *output, | |||
322 | struct wlr_box box; | 322 | struct wlr_box box; |
323 | float color[4]; | 323 | float color[4]; |
324 | 324 | ||
325 | struct sway_container *workspace = container_parent(con, C_WORKSPACE); | 325 | struct sway_container *ws = container_parent(con, C_WORKSPACE); |
326 | int other_views = workspace->children->length - 1; | 326 | int other_views = container_count_descendants_of_type(ws, C_VIEW) - 1; |
327 | 327 | ||
328 | if (config->hide_edge_borders != E_VERTICAL | 328 | if (config->hide_edge_borders != E_VERTICAL |
329 | && config->hide_edge_borders != E_BOTH | 329 | && config->hide_edge_borders != E_BOTH |
@@ -424,8 +424,8 @@ static void render_container_simple_border_pixel(struct sway_output *output, | |||
424 | struct wlr_box box; | 424 | struct wlr_box box; |
425 | float color[4]; | 425 | float color[4]; |
426 | 426 | ||
427 | struct sway_container *workspace = container_parent(con, C_WORKSPACE); | 427 | struct sway_container *ws = container_parent(con, C_WORKSPACE); |
428 | int other_views = workspace->children->length - 1; | 428 | int other_views = container_count_descendants_of_type(ws, C_VIEW) - 1; |
429 | 429 | ||
430 | if (config->hide_edge_borders != E_VERTICAL | 430 | if (config->hide_edge_borders != E_VERTICAL |
431 | && config->hide_edge_borders != E_BOTH | 431 | && config->hide_edge_borders != E_BOTH |
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, | |||
547 | return container_find(con, find_child_func, child); | 547 | return container_find(con, find_child_func, child); |
548 | } | 548 | } |
549 | 549 | ||
550 | int container_count_descendants_of_type(struct sway_container *con, | ||
551 | enum sway_container_type type) { | ||
552 | int children = 0; | ||
553 | if (con->type == type) { | ||
554 | children++; | ||
555 | } else if (con->children) { | ||
556 | for (int i = 0; i < con->children->length; i++) { | ||
557 | struct sway_container *child = con->children->items[i]; | ||
558 | children += container_count_descendants_of_type(child, type); | ||
559 | } | ||
560 | } | ||
561 | return children; | ||
562 | } | ||
563 | |||
550 | void container_damage_whole(struct sway_container *container) { | 564 | void container_damage_whole(struct sway_container *container) { |
551 | for (int i = 0; i < root_container.children->length; ++i) { | 565 | for (int i = 0; i < root_container.children->length; ++i) { |
552 | struct sway_container *cont = root_container.children->items[i]; | 566 | 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) { | |||
101 | } | 101 | } |
102 | 102 | ||
103 | struct sway_container *ws = container_parent(view->swayc, C_WORKSPACE); | 103 | struct sway_container *ws = container_parent(view->swayc, C_WORKSPACE); |
104 | int other_views = ws->children->length - 1; | 104 | int other_views = container_count_descendants_of_type(ws, C_VIEW) - 1; |
105 | 105 | ||
106 | double x, y, width, height; | 106 | double x, y, width, height; |
107 | x = y = width = height = 0; | 107 | x = y = width = height = 0; |