window: Don't change workspaces of unmanaged windows
If the ancestor a window is transient for has already been unmanaged when the window is activated via meta_window_activate_full while its transient_for property still points to that ancestor, this will cause the already unmanaged ancestor to get added to the windows workspace. This is after the ancestor had its workspace set to NULL when it was unmanaged, causing this to look like an actual workspace change. Once the window has been added to the workspace, it will never be removed again, because the it has already been unmanaged. This confuses things like the shell window tracker and leads to phantom windows being considered present for apps that are not even running anymore. Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4184 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2003>
This commit is contained in:
parent
89a13b4557
commit
e38db1237d
@ -4989,6 +4989,9 @@ static void
|
||||
meta_window_change_workspace_without_transients (MetaWindow *window,
|
||||
MetaWorkspace *workspace)
|
||||
{
|
||||
if (window->unmanaging)
|
||||
return;
|
||||
|
||||
/* Try to unstick the window if it's stuck. This doesn't
|
||||
* have any guarantee that we'll actually unstick the
|
||||
* window, since it could be stuck for other reasons. */
|
||||
|
Loading…
Reference in New Issue
Block a user