mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-26 03:29:00 +01:00
get rid of EventEmitter for editor inputs, models and workbench components
This commit is contained in:
@@ -7,10 +7,10 @@
|
||||
import nls = require('vs/nls');
|
||||
import {TPromise} from 'vs/base/common/winjs.base';
|
||||
import types = require('vs/base/common/types');
|
||||
import {once} from 'vs/base/common/event';
|
||||
import URI from 'vs/base/common/uri';
|
||||
import {getPathLabel, IWorkspaceProvider} from 'vs/base/common/labels';
|
||||
import {isBinaryMime} from 'vs/base/common/mime';
|
||||
import {EventType} from 'vs/base/common/events';
|
||||
import {EditorModel, IFileEditorInput, EditorInput, BaseDiffEditorInput} from 'vs/workbench/common/editor';
|
||||
import {BaseTextEditorModel} from 'vs/workbench/common/editor/textEditorModel';
|
||||
import {DiffEditorModel} from 'vs/workbench/common/editor/diffEditorModel';
|
||||
@@ -46,13 +46,15 @@ export class DiffEditorInput extends BaseDiffEditorInput {
|
||||
private registerListeners(): void {
|
||||
|
||||
// When the original or modified input gets disposed, dispose this diff editor input
|
||||
this._toUnbind.push(this.originalInput.addListener2(EventType.DISPOSE, () => {
|
||||
const onceOriginalDisposed = once(this.originalInput.onDispose);
|
||||
this._toUnbind.push(onceOriginalDisposed(() => {
|
||||
if (!this.isDisposed()) {
|
||||
this.dispose();
|
||||
}
|
||||
}));
|
||||
|
||||
this._toUnbind.push(this.modifiedInput.addListener2(EventType.DISPOSE, () => {
|
||||
const onceModifiedDisposed = once(this.modifiedInput.onDispose);
|
||||
this._toUnbind.push(onceModifiedDisposed(() => {
|
||||
if (!this.isDisposed()) {
|
||||
this.dispose();
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
import Event, {Emitter} from 'vs/base/common/event';
|
||||
import Event, {Emitter, once} from 'vs/base/common/event';
|
||||
import {IEditorRegistry, Extensions, EditorInput, getUntitledOrFileResource, IEditorStacksModel, IEditorGroup, IEditorIdentifier, IGroupEvent, GroupIdentifier, IStacksModelChangeEvent, IWorkbenchEditorConfiguration, EditorOpenPositioning} from 'vs/workbench/common/editor';
|
||||
import URI from 'vs/base/common/uri';
|
||||
import {IStorageService, StorageScope} from 'vs/platform/storage/common/storage';
|
||||
@@ -296,7 +296,8 @@ export class EditorGroup implements IEditorGroup {
|
||||
const unbind: IDisposable[] = [];
|
||||
|
||||
// Re-emit disposal of editor input as our own event
|
||||
unbind.push(editor.addOneTimeDisposableListener('dispose', () => {
|
||||
const onceDispose = once(editor.onDispose);
|
||||
unbind.push(onceDispose(() => {
|
||||
if (this.indexOf(editor) >= 0) {
|
||||
this._onEditorDisposed.fire(editor);
|
||||
}
|
||||
|
||||
@@ -10,7 +10,6 @@ import {EditorModel, EditorInput} from 'vs/workbench/common/editor';
|
||||
import {ResourceEditorModel} from 'vs/workbench/common/editor/resourceEditorModel';
|
||||
import {IModel} from 'vs/editor/common/editorCommon';
|
||||
import URI from 'vs/base/common/uri';
|
||||
import {EventType} from 'vs/base/common/events';
|
||||
import {IInstantiationService} from 'vs/platform/instantiation/common/instantiation';
|
||||
import {IModelService} from 'vs/editor/common/services/modelService';
|
||||
import {IDisposable} from 'vs/base/common/lifecycle';
|
||||
@@ -42,7 +41,7 @@ export class ResourceEditorInput extends EditorInput {
|
||||
} else {
|
||||
array.unshift(provider);
|
||||
}
|
||||
|
||||
|
||||
return {
|
||||
dispose() {
|
||||
let array = ResourceEditorInput.registry[scheme];
|
||||
@@ -158,7 +157,7 @@ export class ResourceEditorInput extends EditorInput {
|
||||
// Otherwise Create Model and handle dispose event
|
||||
return ResourceEditorInput.getOrCreateModel(this.modelService, this.resource).then(() => {
|
||||
let model = this.instantiationService.createInstance(ResourceEditorModel, this.resource);
|
||||
const unbind = model.addListener2(EventType.DISPOSE, () => {
|
||||
const unbind = model.onDispose(() => {
|
||||
this.cachedModel = null; // make sure we do not dispose model again
|
||||
unbind.dispose();
|
||||
this.dispose();
|
||||
|
||||
Reference in New Issue
Block a user