summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sway/input/seatop_move_tiling.c26
1 files changed, 18 insertions, 8 deletions
diff --git a/sway/input/seatop_move_tiling.c b/sway/input/seatop_move_tiling.c
index bbed01a8..a8cc5f75 100644
--- a/sway/input/seatop_move_tiling.c
+++ b/sway/input/seatop_move_tiling.c
@@ -45,17 +45,27 @@ static void handle_render(struct sway_seat *seat, struct fx_render_context *ctx)
memcpy(&box, &e->drop_box, sizeof(struct wlr_box));
scale_box(&box, ctx->output->wlr_output->scale);
- // Render blur
- pixman_region32_t opaque_region;
- pixman_region32_init(&opaque_region);
struct decoration_data deco_data = get_undecorated_decoration_data();
deco_data.blur = e->con->blur_enabled;
- deco_data.corner_radius = e->con->corner_radius;
- struct wlr_fbox src_box = {0};
- render_blur(ctx, NULL, &src_box, &box, false, &opaque_region, deco_data);
- pixman_region32_fini(&opaque_region);
+ deco_data.corner_radius = e->con->corner_radius * ctx->output->wlr_output->scale;
+
+ // Render blur
+ if (deco_data.blur && color[3] < 1.0f) {
+ pixman_region32_t opaque_region;
+ pixman_region32_init(&opaque_region);
+ struct wlr_fbox src_box = {0};
+ struct wlr_box blur_box;
+ memcpy(&blur_box, &e->drop_box, sizeof(struct wlr_box));
+ // The render_blur function doesn't use root-relative coordinates
+ blur_box.x -= ctx->output->lx;
+ blur_box.y -= ctx->output->ly;
+ scale_box(&blur_box, ctx->output->wlr_output->scale);
+
+ render_blur(ctx, NULL, &src_box, &blur_box, false, &opaque_region, deco_data);
+ pixman_region32_fini(&opaque_region);
+ }
- render_rounded_rect(ctx, &box, color, e->con->corner_radius * ctx->output->wlr_output->scale, ALL);
+ render_rounded_rect(ctx, &box, color, deco_data.corner_radius, ALL);
}
}