From 356bab112154743e69ad3fcbcd9029dc532b262e Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Mon, 1 May 2023 17:04:46 +0200 Subject: [PATCH] shell: Use swapped signal connection for MetaWindowActor::destroy The callback would schedule a clutter_actor_destroy() on the first argument. Unless told otherwise, this is the same actor that is already being destroyed, so this is a no-op. Instead, the intent is to make the clone follow up destruction of the window actor so that it results in correct removal of this window from the ShellWindowPreviewLayout. Use a swapped connection to pass the clone actor as the first argument of the signal callback. Fixes: 04c781674c ("Move WindowPreviewLayout from JS to C") Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6570 Part-of: --- src/shell-window-preview-layout.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/shell-window-preview-layout.c b/src/shell-window-preview-layout.c index 8d8596af4..fa3cc1f6d 100644 --- a/src/shell-window-preview-layout.c +++ b/src/shell-window-preview-layout.c @@ -394,8 +394,8 @@ shell_window_preview_layout_add_window (ShellWindowPreviewLayout *self, g_signal_connect (window, "position-changed", G_CALLBACK (on_window_size_position_changed), self); window_info->window_actor_destroy_id = - g_signal_connect (window_actor, "destroy", - G_CALLBACK (on_window_destroyed), actor); + g_signal_connect_swapped (window_actor, "destroy", + G_CALLBACK (on_window_destroyed), actor); window_info->destroy_id = g_signal_connect (actor, "destroy", G_CALLBACK (on_actor_destroyed), self);