From 72b81a01a53fed3e1dc86930f67d9fd7ed056ef5 Mon Sep 17 00:00:00 2001 From: Leonhard Date: Thu, 13 Aug 2026 13:59:51 +0200 Subject: [PATCH] NotificationStack: Use transition builder for destroy animation --- src/Misc/NotificationStack.vala | 16 +++++++--------- src/WindowManager.vala | 26 +++----------------------- 2 files changed, 10 insertions(+), 32 deletions(-) diff --git a/src/Misc/NotificationStack.vala b/src/Misc/NotificationStack.vala index 23ba6593e..1f2a668f1 100644 --- a/src/Misc/NotificationStack.vala +++ b/src/Misc/NotificationStack.vala @@ -163,17 +163,15 @@ public class Gala.NotificationStack : Object { } } - public void destroy_notification (Meta.WindowActor notification) { - notification.save_easing_state (); - notification.set_easing_duration (Utils.get_animation_duration (AnimationDuration.CLOSE)); - notification.set_easing_mode (Clutter.AnimationMode.EASE_IN_QUAD); - notification.opacity = 0; - - notification.x += stack_width; - notification.restore_easing_state (); - + public async void destroy_notification (Meta.WindowActor notification) { notifications.remove (notification); update_positions (); + + var builder = new TransitionBuilder (notification, AnimationDuration.CLOSE, EASE_IN_QUAD); + builder.add_property ("opacity", 0u); + builder.add_property ("x", notification.x + stack_width); + + yield builder.run (); } /** diff --git a/src/WindowManager.vala b/src/WindowManager.vala index 3f5b36320..237e61e2d 100644 --- a/src/WindowManager.vala +++ b/src/WindowManager.vala @@ -1143,31 +1143,8 @@ namespace Gala { } public override void destroy (Meta.WindowActor actor) { - unowned var window = actor.get_meta_window (); - actor.remove_all_transitions (); - if (NotificationStack.is_notification (window)) { - if (Meta.Prefs.get_gnome_animations ()) { - destroying.add (actor); - } - - notification_stack.destroy_notification (actor); - - if (Meta.Prefs.get_gnome_animations ()) { - ulong destroy_handler_id = 0UL; - destroy_handler_id = actor.transitions_completed.connect (() => { - actor.disconnect (destroy_handler_id); - destroying.remove (actor); - destroy_completed (actor); - }); - } else { - destroy_completed (actor); - } - - return; - } - animate_destroy.begin (actor); } @@ -1202,6 +1179,9 @@ namespace Gala { break; default: + if (NotificationStack.is_notification (window)) { + yield notification_stack.destroy_notification (actor); + } break; }