diff --git a/src/vs/workbench/browser/labels.ts b/src/vs/workbench/browser/labels.ts index 895d41d509e9e0ede5d2a9f43966cc9d4ce03fcf..b92199f1f8655e78e8d5cab12ecc07be7e4f57aa 100644 --- a/src/vs/workbench/browser/labels.ts +++ b/src/vs/workbench/browser/labels.ts @@ -353,7 +353,7 @@ class ResourceLabelWidget extends IconLabel { this.setResource({ resource, name, description }, options); } - setResource(label: IResourceLabelProps, options?: IResourceLabelOptions): void { + setResource(label: IResourceLabelProps, options: IResourceLabelOptions = Object.create(null)): void { if (label.resource?.scheme === Schemas.untitled) { // Untitled labels are very dynamic because they may change // whenever the content changes (unless a path is associated). @@ -369,19 +369,20 @@ class ResourceLabelWidget extends IconLabel { } if (typeof label.description === 'string') { - let untitledDescription: string; - if (untitledModel.hasAssociatedFilePath) { - untitledDescription = this.labelService.getUriLabel(dirname(untitledModel.resource), { relative: true }); - } else { - untitledDescription = untitledModel.resource.path; - } - + let untitledDescription = untitledModel.resource.path; if (label.name !== untitledDescription) { label.description = untitledDescription; } else if (label.description === posix.sep) { label.description = undefined; // unset showing just "/" for untitled without associated resource } } + + let untitledTitle = untitledModel.resource.path; + if (untitledModel.name !== untitledTitle) { + options.title = `${untitledModel.name} • ${untitledTitle}`; + } else { + options.title = untitledTitle; + } } } diff --git a/src/vs/workbench/test/browser/parts/editor/editorDiffModel.test.ts b/src/vs/workbench/test/browser/parts/editor/editorDiffModel.test.ts index 9de4ac90c2ea1e7767059ddcf2016aad0a5ddc8b..37bfc6dc478e36be3742d303c330c5ad600121e7 100644 --- a/src/vs/workbench/test/browser/parts/editor/editorDiffModel.test.ts +++ b/src/vs/workbench/test/browser/parts/editor/editorDiffModel.test.ts @@ -13,6 +13,7 @@ import { ITextModel } from 'vs/editor/common/model'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; suite('Workbench editor model', () => { + let instantiationService: IInstantiationService; let accessor: TestServiceAccessor; diff --git a/src/vs/workbench/test/browser/parts/editor/resourceEditorInput.test.ts b/src/vs/workbench/test/browser/parts/editor/resourceEditorInput.test.ts index 0593d4a5fd2f8ccbb01a70509cc653fd2aa3a64b..7634e777a079c3c2ee3b539785925b14d6bc2476 100644 --- a/src/vs/workbench/test/browser/parts/editor/resourceEditorInput.test.ts +++ b/src/vs/workbench/test/browser/parts/editor/resourceEditorInput.test.ts @@ -13,6 +13,7 @@ import { snapshotToString } from 'vs/workbench/services/textfile/common/textfile import { ModesRegistry, PLAINTEXT_MODE_ID } from 'vs/editor/common/modes/modesRegistry'; suite('Resource text editors', () => { + let instantiationService: IInstantiationService; let accessor: TestServiceAccessor;