tests: Assert.grid: add centered parameter
This commit is contained in:
@@ -12,7 +12,7 @@ tests.register("Focus and move windows", 1, () => {
|
||||
|
||||
function testLayout(shortcutName: string, grid: KwinClient[][]) {
|
||||
qtMock.fireShortcut(shortcutName);
|
||||
Assert.centeredGrid(config, screen, 100, grid, { skip: 1 });
|
||||
Assert.grid(config, screen, 100, grid, true, { skip: 1 });
|
||||
}
|
||||
|
||||
function testFocus(shortcutName: string, expectedFocus: KwinClient) {
|
||||
|
||||
@@ -6,34 +6,34 @@ tests.register("Pin", 20, () => {
|
||||
const screenHalfRight = new MockQmlRect(screen.width/2, 0, screen.width/2, screen.height);
|
||||
|
||||
const [pinned, tiled1, tiled2] = workspaceMock.createClients(3);
|
||||
Assert.centeredGrid(config, screen, 100, [ [pinned], [tiled1], [tiled2] ]);
|
||||
Assert.grid(config, screen, 100, [ [pinned], [tiled1], [tiled2] ], true);
|
||||
|
||||
pinned.pin(screenHalfLeft);
|
||||
Assert.equalRects(pinned.frameGeometry, screenHalfLeft);
|
||||
Assert.centeredGrid(config, screenHalfRight, 100, [ [tiled1], [tiled2] ]);
|
||||
Assert.grid(config, screenHalfRight, 100, [ [tiled1], [tiled2] ], true);
|
||||
|
||||
pinned.pin(screenHalfRight);
|
||||
Assert.equalRects(pinned.frameGeometry, screenHalfRight);
|
||||
Assert.centeredGrid(config, screenHalfLeft, 100, [ [tiled1], [tiled2] ]);
|
||||
Assert.grid(config, screenHalfLeft, 100, [ [tiled1], [tiled2] ], true);
|
||||
|
||||
pinned.unpin();
|
||||
Assert.equalRects(pinned.frameGeometry, screenHalfRight);
|
||||
Assert.centeredGrid(config, screen, 100, [ [tiled1], [tiled2] ]);
|
||||
Assert.grid(config, screen, 100, [ [tiled1], [tiled2] ], true);
|
||||
|
||||
pinned.pin(screenHalfRight);
|
||||
Assert.equalRects(pinned.frameGeometry, screenHalfRight);
|
||||
Assert.centeredGrid(config, screenHalfLeft, 100, [ [tiled1], [tiled2] ]);
|
||||
Assert.grid(config, screenHalfLeft, 100, [ [tiled1], [tiled2] ], true);
|
||||
|
||||
pinned.minimized = true;
|
||||
Assert.centeredGrid(config, screen, 100, [ [tiled1], [tiled2] ]);
|
||||
Assert.grid(config, screen, 100, [ [tiled1], [tiled2] ], true);
|
||||
|
||||
pinned.minimized = false;
|
||||
Assert.equalRects(pinned.frameGeometry, screenHalfRight);
|
||||
Assert.centeredGrid(config, screenHalfLeft, 100, [ [tiled1], [tiled2] ]);
|
||||
Assert.grid(config, screenHalfLeft, 100, [ [tiled1], [tiled2] ], true);
|
||||
|
||||
workspaceMock.activeWindow = pinned;
|
||||
qtMock.fireShortcut("karousel-window-toggle-floating");
|
||||
Assert.assert(pinned.tile === null);
|
||||
pinned.frameGeometry = new MockQmlRect(10, 20, 100, 200); // This is needed because the window's preferredWidth can change when pinning, because frameGeometryChanged can fire before tileChanged. TODO: Ensure pinned window keeps its preferredWidth.
|
||||
Assert.centeredGrid(config, screen, 100, [ [tiled1], [tiled2], [pinned] ]);
|
||||
Assert.grid(config, screen, 100, [ [tiled1], [tiled2], [pinned] ], true);
|
||||
});
|
||||
|
||||
@@ -123,27 +123,32 @@ namespace Assert {
|
||||
);
|
||||
}
|
||||
|
||||
export function centeredGrid(
|
||||
export function grid(
|
||||
config: Config,
|
||||
screen: QmlRect,
|
||||
columnWidth: number,
|
||||
grid: KwinClient[][],
|
||||
centered: boolean,
|
||||
{ message, skip=0 }: Options = {},
|
||||
) {
|
||||
const nColumns = grid.length;
|
||||
const columnHeight = screen.height - config.gapsOuterTop - config.gapsOuterBottom;
|
||||
const columnsWidth = nColumns * columnWidth + (nColumns-1) * config.gapsInnerHorizontal;
|
||||
const startX = centered ?
|
||||
screen.x + (screen.width - columnsWidth) / 2 :
|
||||
grid[0][0].frameGeometry.x;
|
||||
|
||||
// assumes uniformly sized windows within columns of uniform width
|
||||
function getRectInGrid(column: number, window: number, nColumns: number, nWindows: number) {
|
||||
const columnHeight = screen.height - config.gapsOuterTop - config.gapsOuterBottom;
|
||||
const columnsWidth = nColumns * columnWidth + (nColumns-1) * config.gapsInnerHorizontal;
|
||||
const windowHeight = (columnHeight - config.gapsInnerVertical * (nWindows-1)) / nWindows;
|
||||
return new MockQmlRect(
|
||||
screen.x + column * (columnWidth + config.gapsInnerHorizontal) + (screen.width-columnsWidth) / 2,
|
||||
startX + column * (columnWidth + config.gapsInnerHorizontal),
|
||||
screen.y + config.gapsOuterTop + (windowHeight + config.gapsInnerVertical) * window,
|
||||
columnWidth,
|
||||
(columnHeight - config.gapsInnerVertical * (nWindows-1)) / nWindows,
|
||||
);
|
||||
}
|
||||
|
||||
const nColumns = grid.length;
|
||||
for (let iColumn = 0; iColumn < nColumns; iColumn++) {
|
||||
const column = grid[iColumn];
|
||||
const nWindows = column.length;
|
||||
|
||||
Reference in New Issue
Block a user