workspacesView: Work around Clutter optimization
Clutter nowadays omits reallocations when only the stage position changed, that is when the allocation relative to the parent changed. As a result (apart from better performance of course), workspaces in the overview may now end up with an outdated "actual geometry" in case the overview moved to a new primary monitor (of equal size as the previous one). Work around that by emitting a signal from the overview on allocation changes, and use that to update the cached geometry. We can revert that change once workspaces become part of the regular overview hierarchy. https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3211
This commit is contained in:
parent
d04daf6a1c
commit
da36506ea5
@ -294,6 +294,7 @@ var Overview = class {
|
|||||||
this._overview = new OverviewActor();
|
this._overview = new OverviewActor();
|
||||||
this._overview._delegate = this;
|
this._overview._delegate = this;
|
||||||
Main.layoutManager.overviewGroup.add_child(this._overview);
|
Main.layoutManager.overviewGroup.add_child(this._overview);
|
||||||
|
this._overview.connect('notify::allocation', () => this.emit('relayout'));
|
||||||
|
|
||||||
this._shellInfo = new ShellInfo();
|
this._shellInfo = new ShellInfo();
|
||||||
|
|
||||||
|
@ -339,6 +339,9 @@ class WorkspacesDisplay extends St.Widget {
|
|||||||
});
|
});
|
||||||
this.connect('notify::allocation', this._updateWorkspacesActualGeometry.bind(this));
|
this.connect('notify::allocation', this._updateWorkspacesActualGeometry.bind(this));
|
||||||
|
|
||||||
|
Main.overview.connect('relayout',
|
||||||
|
() => this._updateWorkspacesActualGeometry());
|
||||||
|
|
||||||
let workspaceManager = global.workspace_manager;
|
let workspaceManager = global.workspace_manager;
|
||||||
this._scrollAdjustment = scrollAdjustment;
|
this._scrollAdjustment = scrollAdjustment;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user