aboutsummaryrefslogtreecommitdiff
path: root/sway/tree
diff options
context:
space:
mode:
authorTudor Brindus <me@tbrindus.ca>2020-05-31 19:03:42 -0400
committerBrian Ashworth <bosrsf04@gmail.com>2020-06-08 19:01:45 -0400
commited08f2f20cc533716001829398bdad8f0e98049b (patch)
treea61b4e212bcef3383bbe49256cf83f6bccd4e3a4 /sway/tree
parent14e887bc3dee8441ba51a593ccdc49e381d33f82 (diff)
tree/view: fix smart gaps when ancestor container is tabbed or stacked
Fixes #5406.
Diffstat (limited to 'sway/tree')
-rw-r--r--sway/tree/view.c13
-rw-r--r--sway/tree/workspace.c2
2 files changed, 8 insertions, 7 deletions
diff --git a/sway/tree/view.c b/sway/tree/view.c
index 314fd381..03ff89b5 100644
--- a/sway/tree/view.c
+++ b/sway/tree/view.c
@@ -192,21 +192,22 @@ bool view_inhibit_idle(struct sway_view *view) {
|| sway_idle_inhibit_v1_is_active(application_inhibitor);
}
-bool view_is_only_visible(struct sway_view *view) {
- bool only_view = true;
+bool view_ancestor_is_only_visible(struct sway_view *view) {
+ bool only_visible = true;
struct sway_container *con = view->container;
while (con) {
enum sway_container_layout layout = container_parent_layout(con);
if (layout != L_TABBED && layout != L_STACKED) {
list_t *siblings = container_get_siblings(con);
if (siblings && siblings->length > 1) {
- only_view = false;
- break;
+ only_visible = false;
}
+ } else {
+ only_visible = true;
}
con = con->parent;
}
- return only_view;
+ return only_visible;
}
static bool gaps_to_edge(struct sway_view *view) {
@@ -247,7 +248,7 @@ void view_autoconfigure(struct sway_view *view) {
bool smart = config->hide_edge_borders_smart == ESMART_ON ||
(config->hide_edge_borders_smart == ESMART_NO_GAPS &&
!gaps_to_edge(view));
- bool hide_smart = smart && view_is_only_visible(view);
+ bool hide_smart = smart && view_ancestor_is_only_visible(view);
if (config->hide_edge_borders == E_BOTH
|| config->hide_edge_borders == E_VERTICAL || hide_smart) {
diff --git a/sway/tree/workspace.c b/sway/tree/workspace.c
index 5568d1f5..0fa28951 100644
--- a/sway/tree/workspace.c
+++ b/sway/tree/workspace.c
@@ -709,7 +709,7 @@ void workspace_add_gaps(struct sway_workspace *ws) {
if (focus && !focus->view) {
focus = seat_get_focus_inactive_view(seat, &focus->node);
}
- if (focus && focus->view && view_is_only_visible(focus->view)) {
+ if (focus && focus->view && view_ancestor_is_only_visible(focus->view)) {
ws->current_gaps.top = 0;
ws->current_gaps.right = 0;
ws->current_gaps.bottom = 0;