Dispose events

https://github.com/microsoft/vscode/issues/155232

The events that is setup for needs to be disposed for js to be able
to garbage collect the terminals.
This commit is contained in:
Svante Boberg
2022-07-23 13:28:52 +02:00
parent 92855ba399
commit 9df996cb3d
4 changed files with 19 additions and 0 deletions
+6
View File
@@ -53,6 +53,12 @@ export class Linkifier implements ILinkifier {
};
}
public dispose(): void {
this._onShowLinkUnderline.dispose();
this._onHideLinkUnderline.dispose();
this._onLinkTooltip.dispose();
}
/**
* Attaches the linkifier to the DOM, enabling linkification.
* @param mouseZoneManager The mouse zone manager to register link zones with.
+7
View File
@@ -38,6 +38,13 @@ export class Linkifier2 extends Disposable implements ILinkifier2 {
this.register(getDisposeArrayDisposable(this._linkCacheDisposables));
}
public dispose(): void {
super.dispose();
this._onShowLinkUnderline.dispose();
this._onHideLinkUnderline.dispose();
this._lastMouseEvent = undefined;
}
public registerLinkProvider(linkProvider: ILinkProvider): IDisposable {
this._linkProviders.push(linkProvider);
return {
+4
View File
@@ -247,8 +247,12 @@ export class Terminal extends CoreTerminal implements ITerminal {
super.dispose();
this._renderService?.dispose();
this._customKeyEventHandler = undefined;
this._overviewRulerRenderer?.dispose();
this._overviewRulerRenderer = undefined;
this.write = () => { };
this.element?.parentNode?.removeChild(this.element);
this.linkifier.dispose();
this.linkifier2.dispose();
}
protected _setup(): void {
+2
View File
@@ -201,6 +201,7 @@ export interface ILinkifier {
linkifyRows(start: number, end: number): void;
registerLinkMatcher(regex: RegExp, handler: LinkMatcherHandler, options?: ILinkMatcherOptions): number;
deregisterLinkMatcher(matcherId: number): boolean;
dispose(): void;
}
interface ILinkState {
@@ -219,6 +220,7 @@ export interface ILinkifier2 {
attachToDom(element: HTMLElement, mouseService: IMouseService, renderService: IRenderService): void;
registerLinkProvider(linkProvider: ILinkProvider): IDisposable;
dispose(): void;
}
export interface ILinkMatcherOptions {