Skip to content

Commit

Permalink
Close other files does not close diff editor, md previews (fixes #3405)
Browse files Browse the repository at this point in the history
  • Loading branch information
bpasero committed Mar 3, 2016
1 parent 6f9385f commit 2ddf83a
Showing 1 changed file with 17 additions and 3 deletions.
20 changes: 17 additions & 3 deletions src/vs/workbench/parts/files/browser/fileActions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1806,7 +1806,7 @@ export abstract class BaseCloseWorkingFileAction extends Action {
model: WorkingFilesModel,
elements: WorkingFileEntry[],
@IUntitledEditorService private untitledEditorService: IUntitledEditorService,
@IWorkbenchEditorService private editorService: IWorkbenchEditorService,
@IWorkbenchEditorService protected editorService: IWorkbenchEditorService,
@ITextFileService private textFileService: ITextFileService,
@IMessageService private messageService: IMessageService,
@IQuickOpenService private quickOpenService: IQuickOpenService
Expand Down Expand Up @@ -1921,6 +1921,10 @@ export class CloseAllWorkingFilesAction extends BaseCloseWorkingFileAction {
this.listenerToDispose = model.onModelChange(this.onModelChange, this);
}

public run(): TPromise<boolean> {
return super.run().then(() => closeNonFileEditors(this.editorService)); // close non file editors too
}

private onModelChange(event: Files.IWorkingFileModelChangeEvent): void {
this.enabled = (this.model.count() > 0);
}
Expand Down Expand Up @@ -1948,7 +1952,7 @@ export class CloseOneWorkingFileAction extends BaseCloseWorkingFileAction {
@IMessageService messageService: IMessageService,
@IQuickOpenService quickOpenService: IQuickOpenService
) {
super(CloseAllWorkingFilesAction.ID, nls.localize('closeLabel', "Close File"), element.dirty ? 'action-close-dirty-file' : 'action-close-file', model, [element], untitledEditorService, editorService, textFileService, messageService, quickOpenService);
super(CloseOneWorkingFileAction.ID, nls.localize('closeLabel', "Close File"), element.dirty ? 'action-close-dirty-file' : 'action-close-file', model, [element], untitledEditorService, editorService, textFileService, messageService, quickOpenService);
}
}

Expand All @@ -1965,7 +1969,11 @@ export class CloseOtherWorkingFilesAction extends BaseCloseWorkingFileAction {
@IMessageService messageService: IMessageService,
@IQuickOpenService quickOpenService: IQuickOpenService
) {
super(CloseAllWorkingFilesAction.ID, nls.localize('closeOtherLabel', "Close Other Files"), 'action-close-file', model, model.getEntries().filter(e => e !== element), untitledEditorService, editorService, textFileService, messageService, quickOpenService);
super(CloseOtherWorkingFilesAction.ID, nls.localize('closeOtherLabel', "Close Other Files"), 'action-close-file', model, model.getEntries().filter(e => e !== element), untitledEditorService, editorService, textFileService, messageService, quickOpenService);
}

public run(): TPromise<boolean> {
return super.run().then(() => closeNonFileEditors(this.editorService)); // close non file editors too
}
}

Expand All @@ -1988,6 +1996,12 @@ function disposeNonDirtyFileInputs(editorService: IWorkbenchEditorService, quick
});
}

function closeNonFileEditors(editorService: IWorkbenchEditorService): TPromise<boolean> {
let nonFileEditors = editorService.getVisibleEditors().filter(e => !workbenchEditorCommon.getUntitledOrFileResource(e.input, true));

return TPromise.join(nonFileEditors.map(e => editorService.closeEditor(e))).then(() => true, errors.onUnexpectedError);
}

function fileEditorInputsForResource(resource: URI, editorService: IWorkbenchEditorService, quickopenService: IQuickOpenService): FileEditorInput[] {

// Get cached ones
Expand Down

0 comments on commit 2ddf83a

Please sign in to comment.