workspacesView: Center extra workspace

At the moment views on non-primary monitors take up the entire work area,
so simply allocating the available size works. However we'll soon shrink
the views a bit to match the visuals on the primary monitor. As workspaces
keep the ratio, reducing their height will also reduce the width; override
the default allocate() to keep the extra workspace horizontally centered.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1735>
This commit is contained in:
Florian Müllner 2021-02-20 13:33:29 +01:00 committed by Marge Bot
parent 2731d35723
commit 40121bbe4b

View File

@ -560,6 +560,18 @@ class ExtraWorkspaceView extends WorkspacesViewBase {
this._workspace.stateAdjustment.value = progress; this._workspace.stateAdjustment.value = progress;
} }
vfunc_allocate(box) {
this.set_allocation(box);
const [width, height] = box.get_size();
const [, childWidth] = this._workspace.get_preferred_width(height);
const childBox = new Clutter.ActorBox();
childBox.set_origin(Math.round((width - childWidth) / 2), 0);
childBox.set_size(childWidth, height);
this._workspace.allocate(childBox);
}
getActiveWorkspace() { getActiveWorkspace() {
return this._workspace; return this._workspace;
} }