Mocks.Workspace: implement createWindow

This commit is contained in:
Peter Fajdiga
2024-09-14 23:43:00 +02:00
parent 7273196e0c
commit 79571146be
6 changed files with 95 additions and 6 deletions

View File

@@ -84,7 +84,7 @@ type KwinClient = {
readonly desktopsChanged: QSignal<[]>;
readonly activitiesChanged: QSignal<[]>;
readonly minimizedChanged: QSignal<[]>;
readonly maximizedAboutToChange: QSignal<[MaximizedMode]>
readonly maximizedAboutToChange: QSignal<[MaximizedMode]>;
readonly captionChanged: QSignal<[]>;
readonly tileChanged: QSignal<[]>;
readonly interactiveMoveResizeStarted: QSignal<[]>;

View File

@@ -1,5 +1,13 @@
{
Qt = new Mocks.Qt();
Workspace = new Mocks.Workspace();
const workspaceMock = new Mocks.Workspace();
Workspace = workspaceMock;
const world = new World(getDefaultConfig());
workspaceMock.createWindow(new Mocks.KwinClient(
1,
"app1",
"Application 1",
new Mocks.QmlRect(0, 0, 200, 200),
));
}

View File

@@ -0,0 +1,69 @@
namespace Mocks {
export class KwinClient {
private static readonly borderThickness = 10;
public readonly shadeable: boolean = false;
public readonly minSize: Readonly<QmlSize> = new QmlSize(0, 0);
public readonly transient: boolean = false;
public readonly transientFor: KwinClient | null = null;
public readonly move: boolean = false;
public readonly resize: boolean = false;
public readonly moveable: boolean = false;
public readonly resizeable: boolean = false;
public readonly fullScreenable: boolean = false;
public readonly maximizable: boolean = false;
public readonly output: Output = false;
public readonly dock: boolean = false;
public readonly normalWindow: boolean = false;
public readonly managed: boolean = false;
public readonly popupWindow: boolean = false;
public fullScreen: boolean = false;
public activities: string[] = [];
public skipSwitcher: boolean = false;
public keepAbove: boolean = false;
public keepBelow: boolean = false;
public shade: boolean = false;
public minimized: boolean = false;
public desktops: KwinDesktop[] = [];
public tile: Tile = false;
public opacity: number = 1.0;
public readonly fullScreenChanged: QSignal<[]> = new QSignal();
public readonly desktopsChanged: QSignal<[]> = new QSignal();
public readonly activitiesChanged: QSignal<[]> = new QSignal();
public readonly minimizedChanged: QSignal<[]> = new QSignal();
public readonly maximizedAboutToChange: QSignal<[MaximizedMode]> = new QSignal();
public readonly captionChanged: QSignal<[]> = new QSignal();
public readonly tileChanged: QSignal<[]> = new QSignal();
public readonly interactiveMoveResizeStarted: QSignal<[]> = new QSignal();
public readonly interactiveMoveResizeFinished: QSignal<[]> = new QSignal();
public readonly frameGeometryChanged: QSignal<[oldGeometry: QmlRect]> = new QSignal();
constructor(
public readonly pid: number,
public readonly resourceClass: string,
public readonly caption: string,
public frameGeometry: QmlRect,
) {}
setMaximize(vertically: boolean, horizontally: boolean) {
this.maximizedAboutToChange.fire(
vertically ? (
horizontally ? MaximizedMode.Maximized : MaximizedMode.Vertically
) : (
horizontally ? MaximizedMode.Horizontally : MaximizedMode.Unmaximized
)
);
}
public get clientGeometry() {
return new QmlRect(
this.frameGeometry.x + KwinClient.borderThickness,
this.frameGeometry.y + KwinClient.borderThickness,
this.frameGeometry.width - 2 * KwinClient.borderThickness,
this.frameGeometry.height - 2 * KwinClient.borderThickness,
);
}
}
}

View File

@@ -7,19 +7,19 @@ namespace Mocks {
public height: number,
) {}
get top() {
public get top() {
return this.y;
}
get bottom() {
public get bottom() {
return this.y + this.height;
}
get left() {
public get left() {
return this.x;
}
get right() {
public get right() {
return this.x + this.width;
}
}

View File

@@ -0,0 +1,8 @@
namespace Mocks {
export class QmlSize {
constructor(
public width: number,
public height: number,
) {}
}
}

View File

@@ -23,5 +23,9 @@ namespace Mocks {
public clientArea(option: ClientAreaOption, output: Output, kwinDesktop: KwinDesktop) {
return new QmlRect(0, 0, 800, 600);
}
public createWindow(kwinClient: KwinClient) {
this.windowActivated.fire(kwinClient);
}
}
}