summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/sway/tree/view.h2
-rw-r--r--sway/desktop/render.c8
-rw-r--r--sway/tree/view.c2
3 files changed, 10 insertions, 2 deletions
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;
}