mirror of
https://github.com/edu4rdshl/gnome-shell.git
synced 2026-07-18 07:34:54 +00:00
workspace: Check if index is valid before using it
If the window wasn't in _windowSlots, the index is -1, so the last element of the array is removed, leading to https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3547 I logged the stack trace from removeWindow() and it seems that when you move the window from the second monitor to another workspace like shown in https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3547, removeWindow() is called twice for it, presumably once for the second monitor workspace, and then once for the first monitor workspace for some reason. It is during that call that _windowSlots doesn't contain the window, so instead the last element (index -1) is removed, leading to the animation bug. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1727>
This commit is contained in:
parent
ff163a03b9
commit
35fb221a7e
1 changed files with 3 additions and 2 deletions
|
|
@ -784,8 +784,9 @@ var WorkspaceLayout = GObject.registerClass({
|
|||
|
||||
// The layout might be frozen and we might not update the windowSlots
|
||||
// on the next allocation, so remove the slot now already
|
||||
this._windowSlots.splice(
|
||||
this._windowSlots.findIndex(s => s[4] === window), 1);
|
||||
const index = this._windowSlots.findIndex(s => s[4] === window);
|
||||
if (index !== -1)
|
||||
this._windowSlots.splice(index, 1);
|
||||
|
||||
// The window might have been reparented by DND
|
||||
if (window.get_parent() === this._container)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue