From cf39d84263e7167d5bfba3def83c69c9b72fe3e1 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Fri, 6 May 2016 15:38:21 +0200 Subject: [PATCH] properly dispose events --- .../workbench/common/editor/editorStacksModel.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/common/editor/editorStacksModel.ts b/src/vs/workbench/common/editor/editorStacksModel.ts index d873dfbe76b..fefb3b31200 100644 --- a/src/vs/workbench/common/editor/editorStacksModel.ts +++ b/src/vs/workbench/common/editor/editorStacksModel.ts @@ -448,6 +448,14 @@ export class EditorGroup implements IEditorGroup { this.active = this.mru[0]; this.preview = this.editors[data.preview]; } + + public dispose(): void { + this._onEditorActivated.dispose(); + this._onEditorClosed.dispose(); + this._onEditorOpened.dispose(); + this._onEditorPinned.dispose(); + this._onEditorUnpinned.dispose(); + } } interface ISerializedEditorStacksModel { @@ -476,10 +484,15 @@ export class EditorStacksModel implements IEditorStacksModel { this.toDispose = []; this._groups = []; + this._onGroupOpened = new Emitter(); this._onGroupClosed = new Emitter(); this._onGroupActivated = new Emitter(); + this.toDispose.push(this._onGroupOpened); + this.toDispose.push(this._onGroupClosed); + this.toDispose.push(this._onGroupActivated); + this.load(); this.registerListeners(); } @@ -557,8 +570,9 @@ export class EditorStacksModel implements IEditorStacksModel { } } - // Close Editors in Group first + // Close Editors in Group first and dispose then group.closeAllEditors(); + group.dispose(); // Splice from groups this._groups.splice(index, 1); -- GitLab