From 895c879f982f7961194d0c43310f73f8c4bfc910 Mon Sep 17 00:00:00 2001 From: DreamMaoMao <2523610504@qq.com> Date: Mon, 24 Feb 2025 19:55:12 +0800 Subject: [PATCH] =?UTF-8?q?fadeout=20border=E4=B9=9F=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E9=80=8F=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- maomao.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/maomao.c b/maomao.c index d3b627bd..0f2ccecc 100644 --- a/maomao.c +++ b/maomao.c @@ -721,6 +721,24 @@ double find_animation_curve_at(double t) { return baked_points[up].y; } +void apply_opacity_to_rect_nodes(struct wlr_scene_node *node, double opacity) { + if (node->type == WLR_SCENE_NODE_RECT) { + struct wlr_scene_rect *rect = wlr_scene_rect_from_node(node); + // Assuming the rect has a color field and we can modify it + rect->color[3] = opacity; // Set the alpha channel of the color + } + + // If the node is a tree, recursively traverse its children + if (node->type == WLR_SCENE_NODE_TREE) { + struct wlr_scene_tree *scene_tree = wlr_scene_tree_from_node(node); + struct wlr_scene_node *child; + wl_list_for_each(child, &scene_tree->children, link) { + apply_opacity_to_rect_nodes(child, opacity); + } + } +} + + void fadeout_client_animation_next_tick(Client *c) { if (!c) return; @@ -751,6 +769,8 @@ void fadeout_client_animation_next_tick(Client *c) { wlr_scene_node_for_each_buffer(&c->snapshot_scene->node, scene_buffer_apply_opacity, &opacity); + apply_opacity_to_rect_nodes(&c->snapshot_scene->node, opacity); + if (animation_passed == 1.0) { wl_list_remove(&c->fadeout_link); wlr_scene_node_destroy(&c->snapshot_scene->node);