workspace: Pass params object to LayoutStrategy

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1617>
This commit is contained in:
Jonas Dreßler 2021-02-01 10:09:51 +01:00 committed by Marge Bot
parent ec0d8e3a72
commit c635ff490a

View File

@ -7,6 +7,7 @@ const Background = imports.ui.background;
const DND = imports.ui.dnd;
const Main = imports.ui.main;
const Overview = imports.ui.overview;
const Params = imports.misc.params;
const { WindowPreview } = imports.ui.windowPreview;
var WINDOW_PREVIEW_MAXIMUM_SCALE = 0.95;
@ -98,13 +99,19 @@ function _interpolate(start, end, step) {
// and center it horizontally, and align it to the bottom vertically.
var LayoutStrategy = class {
constructor(monitor, rowSpacing, columnSpacing) {
if (this.constructor === LayoutStrategy)
throw new TypeError(`Cannot instantiate abstract type ${this.constructor.name}`);
constructor(params) {
params = Params.parse(params, {
monitor: null,
rowSpacing: 0,
columnSpacing: 0,
});
this._monitor = monitor;
this._rowSpacing = rowSpacing;
this._columnSpacing = columnSpacing;
if (!params.monitor)
throw new Error(`No monitor param passed to ${this.constructor.name}`);
this._monitor = params.monitor;
this._rowSpacing = params.rowSpacing;
this._columnSpacing = params.columnSpacing;
}
_newRow() {
@ -474,15 +481,16 @@ var WorkspaceLayout = GObject.registerClass({
}
_createBestLayout(area) {
const [rowSpacing, colSpacing] =
const [rowSpacing, columnSpacing] =
this._adjustSpacingAndPadding(this._spacing, this._spacing, null);
// We look for the largest scale that allows us to fit the
// largest row/tallest column on the workspace.
const strategy = new UnalignedLayoutStrategy(
Main.layoutManager.monitors[this._monitorIndex],
const strategy = new UnalignedLayoutStrategy({
monitor: Main.layoutManager.monitors[this._monitorIndex],
rowSpacing,
colSpacing);
columnSpacing,
});
let lastLayout = {};