From 25b22b6569e02f2fbfcea15b891ce9d110c9dbe4 Mon Sep 17 00:00:00 2001 From: Erik Reider Date: Tue, 2 May 2023 11:48:07 +0200 Subject: [PATCH] Added some missed shadow logic from #144 --- sway/desktop/render.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/sway/desktop/render.c b/sway/desktop/render.c index 2e1bd10f..fd041791 100644 --- a/sway/desktop/render.c +++ b/sway/desktop/render.c @@ -387,8 +387,8 @@ void render_box_shadow(struct sway_output *output, pixman_region32_t *output_dam struct wlr_box box; memcpy(&box, _box, sizeof(struct wlr_box)); - box.x -= output->lx * wlr_output->scale + blur_sigma; - box.y -= output->ly * wlr_output->scale + blur_sigma; + box.x -= blur_sigma; + box.y -= blur_sigma; box.width += 2 * blur_sigma; box.height += 2 * blur_sigma; @@ -830,7 +830,8 @@ static void render_saved_view(struct sway_view *view, struct sway_output *output enum wl_output_transform transform = wlr_output_transform_invert(saved_buf->transform); wlr_matrix_project_box(matrix, &proj_box, transform, 0, wlr_output->transform_matrix); - struct sway_container_state state = view->container->current; + struct sway_container *con = view->container; + struct sway_container_state state = con->current; dst_box.x = state.x - output->lx; dst_box.y = state.y - output->ly; dst_box.width = state.width; @@ -870,6 +871,15 @@ static void render_saved_view(struct sway_view *view, struct sway_output *output struct fx_texture fx_texture = fx_texture_from_wlr_texture(saved_buf->buffer->texture); render_texture(wlr_output, damage, &fx_texture, &saved_buf->source_box, &dst_box, matrix, deco_data); + + // render shadow + if (deco_data.shadow && should_parameters_shadow() + // Only draw shadows on CSD windows if shadows_on_csd is enabled + && !(con->current.border == B_CSD && !config->shadows_on_csd_enabled)) { + int corner_radius = (con->corner_radius + state.border_thickness) * wlr_output->scale; + render_box_shadow(output, damage, &dst_box, config->shadow_color, + config->shadow_blur_sigma, corner_radius); + } } // FIXME: we should set the surface that this saved buffer originates from