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: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2756>
This commit is contained in:
parent
b6ab909180
commit
356bab1121
@ -394,8 +394,8 @@ shell_window_preview_layout_add_window (ShellWindowPreviewLayout *self,
|
|||||||
g_signal_connect (window, "position-changed",
|
g_signal_connect (window, "position-changed",
|
||||||
G_CALLBACK (on_window_size_position_changed), self);
|
G_CALLBACK (on_window_size_position_changed), self);
|
||||||
window_info->window_actor_destroy_id =
|
window_info->window_actor_destroy_id =
|
||||||
g_signal_connect (window_actor, "destroy",
|
g_signal_connect_swapped (window_actor, "destroy",
|
||||||
G_CALLBACK (on_window_destroyed), actor);
|
G_CALLBACK (on_window_destroyed), actor);
|
||||||
window_info->destroy_id =
|
window_info->destroy_id =
|
||||||
g_signal_connect (actor, "destroy",
|
g_signal_connect (actor, "destroy",
|
||||||
G_CALLBACK (on_actor_destroyed), self);
|
G_CALLBACK (on_actor_destroyed), self);
|
||||||
|
Loading…
Reference in New Issue
Block a user