diff --git a/src/extern/kwin.d.ts b/src/extern/kwin.d.ts index fe11134..2c7b4fa 100644 --- a/src/extern/kwin.d.ts +++ b/src/extern/kwin.d.ts @@ -15,14 +15,14 @@ declare const workspace: { currentActivity: string; // Signals - clientAdded: QSignal; - clientRemoved: QSignal; - clientMinimized: QSignal; - clientUnminimized: QSignal; - clientMaximizeSet: QSignal; - clientActivated: QSignal; - numberDesktopsChanged: QSignal; - virtualScreenSizeChanged: QSignal; + clientAdded: QSignal<[KwinClient]>; + clientRemoved: QSignal<[AbstractClient]>; + clientMinimized: QSignal<[AbstractClient]>; + clientUnminimized: QSignal<[AbstractClient]>; + clientMaximizeSet: QSignal<[AbstractClient, horizontally: boolean, vertically: boolean]>; + clientActivated: QSignal<[AbstractClient]>; + numberDesktopsChanged: QSignal<[oldNumberOfVirtualDesktops: number]>; + virtualScreenSizeChanged: QSignal<[void]>; // Functions clientArea(option: ClientAreaOption, screenNumber: number, desktopNumber: number); @@ -52,14 +52,14 @@ interface AbstractClient { minimized: boolean; // Signals - fullScreenChanged: QSignal; - desktopChanged: QSignal; - activitiesChanged: QSignal; - captionChanged: QSignal; - tileChanged: QSignal; - moveResizedChanged: QSignal; - moveResizeCursorChanged: QSignal; - clientStartUserMovedResized: QSignal; + fullScreenChanged: QSignal<[void]>; + desktopChanged: QSignal<[void]>; + activitiesChanged: QSignal<[AbstractClient]>; + captionChanged: QSignal<[void]>; + tileChanged: QSignal<[Tile]>; + moveResizedChanged: QSignal<[void]>; + moveResizeCursorChanged: QSignal<[void]>; + clientStartUserMovedResized: QSignal<[void]>; // Functions setMaximize(vertically: boolean, horizontally: boolean): void; @@ -74,7 +74,7 @@ interface TopLevel extends AbstractClient { managed: boolean; // Signals - frameGeometryChanged: QSignal; + frameGeometryChanged: QSignal<[TopLevel, oldGeometry: QRect]>; } interface KwinClient extends TopLevel {} diff --git a/src/extern/qt.d.ts b/src/extern/qt.d.ts index ecc698b..e9ffba9 100644 --- a/src/extern/qt.d.ts +++ b/src/extern/qt.d.ts @@ -28,14 +28,14 @@ type QSize = { height: number; } -type QSignal = { - connect(handler: (...args: any[]) => void): void; - disconnect(handler: (...args: any[]) => void): void; +type QSignal = { + connect(handler: (...args: [...T]) => void): void; + disconnect(handler: (...args: [...T]) => void): void; } type QQmlTimer = { interval: number; - triggered: QSignal; + triggered: QSignal<[void]>; restart(): void; destroy(): void; } diff --git a/src/utils/SignalManager.ts b/src/utils/SignalManager.ts index 0f95b06..b8deb5b 100644 --- a/src/utils/SignalManager.ts +++ b/src/utils/SignalManager.ts @@ -1,11 +1,11 @@ class SignalManager { - private connections: { signal: QSignal, handler: (...args: any[]) => void }[]; + private connections: { signal: QSignal, handler: (...args: any) => void }[]; constructor() { this.connections = []; } - public connect(signal: QSignal, handler: (...args: any[]) => void) { + public connect(signal: QSignal, handler: (...args: [...T]) => void) { signal.connect(handler); this.connections.push({ signal: signal, handler: handler }); }