diff --git a/include/sway/tree/view.h b/include/sway/tree/view.h index 9d468612..7b52aa4b 100644 --- a/include/sway/tree/view.h +++ b/include/sway/tree/view.h @@ -378,4 +378,6 @@ bool view_is_transient_for(struct sway_view *child, struct sway_view *ancestor); void view_assign_ctx(struct sway_view *view, struct launcher_ctx *ctx); +bool gaps_to_edge(struct sway_view *view); + #endif diff --git a/sway/desktop/render.c b/sway/desktop/render.c index 50f7d70b..8510cf68 100644 --- a/sway/desktop/render.c +++ b/sway/desktop/render.c @@ -720,8 +720,14 @@ static void render_view_toplevels(struct sway_view *view, struct sway_output *ou clip_box.y = state.y - output->ly; clip_box.width = state.width; clip_box.height = state.height; + + bool smart = config->hide_edge_borders_smart == ESMART_ON || + (config->hide_edge_borders_smart == ESMART_NO_GAPS && + !gaps_to_edge(view)); + if (state.fullscreen_mode == FULLSCREEN_NONE - && (state.border == B_PIXEL || state.border == B_NORMAL)) { + && (state.border == B_PIXEL || state.border == B_NORMAL) + && !smart) { clip_box.x += state.border_thickness; clip_box.width -= state.border_thickness * 2; diff --git a/sway/tree/view.c b/sway/tree/view.c index b66dc2f8..272967f4 100644 --- a/sway/tree/view.c +++ b/sway/tree/view.c @@ -233,7 +233,7 @@ static bool view_is_only_visible(struct sway_view *view) { return true; } -static bool gaps_to_edge(struct sway_view *view) { +bool gaps_to_edge(struct sway_view *view) { struct side_gaps gaps = view->container->pending.workspace->current_gaps; return gaps.top > 0 || gaps.right > 0 || gaps.bottom > 0 || gaps.left > 0; }