Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions packages/gnome-shell/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,17 @@
}
},
"./misc/permissionStore/ambient": "./dist/misc/permissionStore-ambient.d.ts",
"./misc/signalTracker": {
"import": {
"types": "./dist/misc/signalTracker.d.ts",
"default": "./dist/misc/signalTracker.js"
},
"require": {
"types": "./dist/misc/signalTracker.d.ts",
"default": "./dist/misc/signalTracker.cjs"
}
},
"./misc/signalTracker/ambient": "./dist/misc/signalTracker-ambient.d.ts",
"./misc/signals": {
"import": {
"types": "./dist/misc/signals.d.ts",
Expand Down
118 changes: 118 additions & 0 deletions packages/gnome-shell/src/misc/signalTracker.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/misc/signalTracker.js

import type GObject from '@girs/gobject-2.0';

/**
* @see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/misc/signalTracker.js#L15
* @version 50
*/
export class TransientSignalHolder extends GObject.Object {
constructor(owner?: object);
destroy(): void;
}

/**
* @see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/misc/signalTracker.js#L96
* @version 50
*/
interface SignalData {
/** a list of handler IDs */
ownerSignals: number[];
/** destroy handler ID of tracked object */
destroyId: number;
}

/**
* @see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/misc/signalTracker.js#L83
* @version 50
*/
declare class SignalTracker {
_owner: object;
_map: Map<object, SignalData>;

constructor(owner: object);

/**
* @private
* @param {object} obj - a tracked object
* @returns {SignalData} - signal data for object
*/
_getSignalData(obj: object): SignalData;

/**
* @private
* @param {GObject.Object} obj - tracked widget
*/
_trackDestroy(obj: GObject.Object): void;

_disconnectSignalForProto(proto: any, obj: object, id: number): void;

_getObjectProto(obj: object): any;

_disconnectSignal(obj: object, id: number): void;

_removeTracker(): void;

/**
* @param {object} obj - tracked object
* @param {...number} handlerIds - tracked handler IDs
*/
track(obj: object, ...handlerIds: number[]): void;

/**
* @param {object} obj - tracked object instance
*/
untrack(obj: object): void;

clear(): void;

destroy(): void;
}

/**
* Connect one or more signals, and associate the handlers
* with a tracked object.
*
* All handlers for a particular object can be disconnected
* by calling disconnectObject(). If object is a {Clutter.widget},
* this is done automatically when the widget is destroyed.
*
* @param {object} thisObj - the emitter object
* @param {...any} args - a sequence of signal-name/handler pairs
* with an optional flags value, followed by an object to track
*
* @see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/misc/signalTracker.js#L209
* @version 50
*/
export function connectObject(thisObj: object, ...args: any): void;

/**
* Disconnect all signals that were connected for
* the specified tracked object
*
* @param {object} thisObj - the emitter object
* @param {object} obj - the tracked object
*
* @see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/misc/signalTracker.js#L256
* @version 50
*/
export function disconnectObject(thisObj: object, obj: object): void;

/**
* Register a GObject type as having a 'destroy' signal
* that should disconnect all handlers
*
* @param {GObject.Type} gtype - a GObject type
*
* @see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/misc/signalTracker.js#L266
* @version 50
*/
export function registerDestroyableType(gtype: GObject.Type): void;

/**
* A debug function that can be used to inspect signal trackers at run time
*
* @see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/misc/signalTracker.js#L281
* @version 50
*/
export function debugGetSignalTrackers(): Map<object, SignalTracker>;