mirror of
https://github.com/wavetermdev/xterm.js.git
synced 2026-08-05 13:43:48 -07:00
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:
@@ -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.
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Vendored
+2
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user