add type parameters to QSignal

This commit is contained in:
Peter Fajdiga
2023-08-29 23:22:41 +02:00
parent 075f6c7e3d
commit 8d6e4f9bc7
3 changed files with 23 additions and 23 deletions

34
src/extern/kwin.d.ts vendored
View File

@@ -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 {}

8
src/extern/qt.d.ts vendored
View File

@@ -28,14 +28,14 @@ type QSize = {
height: number;
}
type QSignal = {
connect(handler: (...args: any[]) => void): void;
disconnect(handler: (...args: any[]) => void): void;
type QSignal<T extends unknown[]> = {
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;
}

View File

@@ -1,11 +1,11 @@
class SignalManager {
private connections: { signal: QSignal, handler: (...args: any[]) => void }[];
private connections: { signal: QSignal<any>, handler: (...args: any) => void }[];
constructor() {
this.connections = [];
}
public connect(signal: QSignal, handler: (...args: any[]) => void) {
public connect<T extends unknown[]>(signal: QSignal<T>, handler: (...args: [...T]) => void) {
signal.connect(handler);
this.connections.push({ signal: signal, handler: handler });
}