diff --git a/src/tests/utils/global.ts b/src/tests/utils/global.ts index 1438899..0a60db9 100644 --- a/src/tests/utils/global.ts +++ b/src/tests/utils/global.ts @@ -61,3 +61,10 @@ function getClientManager(world: World): ClientManager { world.do((cm, dm) => clientManager = cm); return clientManager!; } + +function activateRandomWindowOnDesktop(desktop: KwinDesktop) { + const windows = Workspace.windows.filter(w => w.desktops.includes(desktop)); + if (windows.length > 0) { + Workspace.activeWindow = randomItem(windows); + } +} diff --git a/src/tests/utils/mocks/MockKwinClient.ts b/src/tests/utils/mocks/MockKwinClient.ts index 156e011..47f6781 100644 --- a/src/tests/utils/mocks/MockKwinClient.ts +++ b/src/tests/utils/mocks/MockKwinClient.ts @@ -198,6 +198,10 @@ class MockKwinClient { this.desktopsChanged.fire(); if (Workspace.activeWindow === this && !desktops.includes(Workspace.currentDesktop)) { Workspace.activeWindow = null; + runMaybe(() => Workspace.activeWindow = null); // fired again for some reason + if (Workspace.activeWindow === null) { + activateRandomWindowOnDesktop(Workspace.currentDesktop); + } }; } diff --git a/src/tests/utils/mocks/MockWorkspace.ts b/src/tests/utils/mocks/MockWorkspace.ts index 87bb0da..3e64eba 100644 --- a/src/tests/utils/mocks/MockWorkspace.ts +++ b/src/tests/utils/mocks/MockWorkspace.ts @@ -58,10 +58,7 @@ class MockWorkspace { () => this.windowRemoved.fire(window), ); if (window === this.activeWindow) { - const windows = this.windows.filter(w => w.desktops.includes(this.currentDesktop)); - if (Workspace.activeWindow === null && windows.length > 0) { - Workspace.activeWindow = randomItem(windows); - } + activateRandomWindowOnDesktop(this.currentDesktop); }; }