TiledMinimized: support un-minimization

This commit is contained in:
Peter Fajdiga
2024-03-09 20:13:40 +01:00
parent 0ea75d6348
commit a1c44647ca
3 changed files with 28 additions and 7 deletions

View File

@@ -76,7 +76,10 @@ class ClientManager {
return;
}
if (client.stateManager.getState() instanceof ClientState.Tiled) {
client.stateManager.setState(() => new ClientState.TiledMinimized(), kwinClient === this.lastFocusedClient);
client.stateManager.setState(
() => new ClientState.TiledMinimized(this.world, client),
kwinClient === this.lastFocusedClient,
);
}
}

View File

@@ -56,12 +56,9 @@ namespace ClientState {
})
manager.connect(kwinClient.minimizedChanged, () => {
console.assert(kwinClient.minimized);
world.do((clientManager, desktopManager) => {
if (kwinClient.minimized) {
clientManager.minimizeClient(kwinClient);
} else {
clientManager.unminimizeClient(kwinClient); // TODO: move to TiledMinimized
}
clientManager.minimizeClient(kwinClient);
});
});

View File

@@ -1,5 +1,26 @@
namespace ClientState {
export class TiledMinimized implements State {
public destroy(passFocus: boolean) {}
private readonly signalManager: SignalManager;
constructor(world: World, client: ClientWrapper) {
this.signalManager = TiledMinimized.initSignalManager(world, client);
}
public destroy(passFocus: boolean) {
this.signalManager.destroy();
}
private static initSignalManager(world: World, client: ClientWrapper) {
const manager = new SignalManager();
manager.connect(client.kwinClient.minimizedChanged, () => {
console.assert(!client.kwinClient.minimized);
world.do((clientManager, desktopManager) => {
clientManager.unminimizeClient(client.kwinClient);
});
});
return manager;
}
}
}