diff --git a/src/vs/workbench/browser/parts/editor/editorGroupsControl.ts b/src/vs/workbench/browser/parts/editor/editorGroupsControl.ts index 7cf955410a9cb9bd4573b004011f7ef034042a62..ef5edcc636ec254a1d8096eb2ba395a650b1fa1b 100644 --- a/src/vs/workbench/browser/parts/editor/editorGroupsControl.ts +++ b/src/vs/workbench/browser/parts/editor/editorGroupsControl.ts @@ -228,6 +228,7 @@ export class EditorGroupsControl extends Themable implements IEditorGroupsContro private updateTabOptions(tabOptions: IEditorTabOptions, refresh?: boolean): void { const tabCloseButton = this.tabOptions ? this.tabOptions.tabCloseButton : 'right'; const tabSizing = this.tabOptions ? this.tabOptions.tabSizing : 'fit'; + const iconTheme = this.tabOptions ? this.tabOptions.iconTheme : 'vs-seti'; this.tabOptions = tabOptions; @@ -266,7 +267,12 @@ export class EditorGroupsControl extends Themable implements IEditorGroupsContro } // Refresh title when layout options change - else if (showingIcons !== this.tabOptions.showIcons || tabCloseButton !== this.tabOptions.tabCloseButton || tabSizing !== this.tabOptions.tabSizing) { + else if ( + showingIcons !== this.tabOptions.showIcons || + tabCloseButton !== this.tabOptions.tabCloseButton || + tabSizing !== this.tabOptions.tabSizing || + iconTheme !== this.tabOptions.iconTheme + ) { titleControl.refresh(); } } diff --git a/src/vs/workbench/browser/parts/editor/editorPart.ts b/src/vs/workbench/browser/parts/editor/editorPart.ts index 73f99e1e0b3ede36a0724a0546c651098ea65bd4..34ecd325ce94b7224fd7f31d79bfb920c122ecbd 100644 --- a/src/vs/workbench/browser/parts/editor/editorPart.ts +++ b/src/vs/workbench/browser/parts/editor/editorPart.ts @@ -164,6 +164,7 @@ export class EditorPart extends Part implements IEditorPart, IEditorGroupService tabCloseButton: editorConfig.tabCloseButton, tabSizing: editorConfig.tabSizing, labelFormat: editorConfig.labelFormat, + iconTheme: config.workbench.iconTheme }; this.revealIfOpen = editorConfig.revealIfOpen; @@ -175,6 +176,7 @@ export class EditorPart extends Part implements IEditorPart, IEditorGroupService tabCloseButton: 'right', tabSizing: 'fit', labelFormat: 'default', + iconTheme: 'vs-seti' }; this.revealIfOpen = false; @@ -207,7 +209,7 @@ export class EditorPart extends Part implements IEditorPart, IEditorGroupService } private onConfigurationUpdated(event: IConfigurationChangeEvent): void { - if (event.affectsConfiguration('workbench.editor')) { + if (event.affectsConfiguration('workbench.editor') || event.affectsConfiguration('workbench.iconTheme')) { const configuration = this.configurationService.getValue(); if (configuration && configuration.workbench && configuration.workbench.editor) { const editorConfig = configuration.workbench.editor; @@ -230,6 +232,7 @@ export class EditorPart extends Part implements IEditorPart, IEditorGroupService tabSizing: editorConfig.tabSizing, showTabs: this.forceHideTabs ? false : editorConfig.showTabs, labelFormat: editorConfig.labelFormat, + iconTheme: configuration.workbench.iconTheme }; if (!this.doNotFireTabOptionsChanged && !objects.equals(oldTabOptions, this.tabOptions)) { diff --git a/src/vs/workbench/browser/parts/editor/media/tabstitle.css b/src/vs/workbench/browser/parts/editor/media/tabstitle.css index 5d70c6e1de76eaeb4d3464f1855dfb3e85456105..3dcea34628f028675564ce08998e7f8a87c28113 100644 --- a/src/vs/workbench/browser/parts/editor/media/tabstitle.css +++ b/src/vs/workbench/browser/parts/editor/media/tabstitle.css @@ -45,6 +45,11 @@ padding-left: 10px; } +.monaco-workbench > .part.editor > .content > .one-editor-silo > .container > .title .tabs-container > .tab.sizing-shrink.has-icon-theme.close-button-right, +.monaco-workbench > .part.editor > .content > .one-editor-silo > .container > .title .tabs-container > .tab.sizing-shrink.has-icon-theme.close-button-off { + padding-left: 5px; /* reduce padding when we show icons and are in shrinking mode and tab close button is not left */ +} + .monaco-workbench > .part.editor > .content > .one-editor-silo > .container > .title .tabs-container > .tab.sizing-fit { width: 120px; min-width: fit-content; @@ -160,11 +165,7 @@ /* No Tab Close Button */ .monaco-workbench > .part.editor > .content > .one-editor-silo > .container > .title .tabs-container > .tab.close-button-off { - padding-right: 12px; /* give a little bit more room if close button is off... */ -} - -.monaco-workbench > .part.editor > .content > .one-editor-silo > .container > .title .tabs-container > .tab.close-button-off.sizing-shrink { - padding-right: 0; /* ...but not when shrinking is enabled */ + padding-right: 10px; /* give a little bit more room if close button is off */ } .monaco-workbench > .part.editor > .content > .one-editor-silo > .container > .title .tabs-container > .tab.close-button-off.dirty { diff --git a/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts b/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts index e7a1c82fbe361b42bf811e9d5530197a1190e824..157d3cdb7715f4691aee93a40a2e155f23157ef6 100644 --- a/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts +++ b/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts @@ -324,6 +324,12 @@ export class TabsTitleControl extends TitleControl { domAction(tabContainer, `sizing-${option}`); }); + if (tabOptions.showIcons && !!tabOptions.iconTheme) { + DOM.addClass(tabContainer, 'has-icon-theme'); + } else { + DOM.removeClass(tabContainer, 'has-icon-theme'); + } + // Label const tabLabel = this.editorLabels[index]; tabLabel.setLabel({ name, description, resource: toResource(editor, { supportSideBySide: true }) }, { extraClasses: ['tab-label'], italic: !isPinned }); diff --git a/src/vs/workbench/common/editor.ts b/src/vs/workbench/common/editor.ts index bc6931efe8ce86d2aae5b0f07b100ed4fc3d3bfe..2a1bbf27e88a361877c31f17414f5a61108e77f3 100644 --- a/src/vs/workbench/common/editor.ts +++ b/src/vs/workbench/common/editor.ts @@ -821,7 +821,8 @@ export interface IWorkbenchEditorConfiguration { revealIfOpen: boolean; swipeToNavigate: boolean, labelFormat: 'default' | 'short' | 'medium' | 'long'; - } + }, + iconTheme: string; }; } diff --git a/src/vs/workbench/services/group/common/groupService.ts b/src/vs/workbench/services/group/common/groupService.ts index 5dce1038c11cf43fd70b53fa01933fc0a202af4b..94476c83187c04096ccc2ecebec3bda7e11b9063 100644 --- a/src/vs/workbench/services/group/common/groupService.ts +++ b/src/vs/workbench/services/group/common/groupService.ts @@ -26,6 +26,7 @@ export interface IEditorTabOptions { showIcons?: boolean; previewEditors?: boolean; labelFormat?: 'default' | 'short' | 'medium' | 'long'; + iconTheme?: string; } export interface IMoveOptions {