diff --git a/src/vs/platform/quickinput/common/quickInput.ts b/src/vs/platform/quickinput/common/quickInput.ts index d1427331cce48..b384addd50947 100644 --- a/src/vs/platform/quickinput/common/quickInput.ts +++ b/src/vs/platform/quickinput/common/quickInput.ts @@ -25,7 +25,6 @@ export interface IQuickPickItem { export interface IQuickPickSeparator { type: 'separator'; - border?: boolean; label?: string; } diff --git a/src/vs/workbench/browser/parts/editor/editorStatus.ts b/src/vs/workbench/browser/parts/editor/editorStatus.ts index d7156eec4e64c..9a47132500af0 100644 --- a/src/vs/workbench/browser/parts/editor/editorStatus.ts +++ b/src/vs/workbench/browser/parts/editor/editorStatus.ts @@ -895,7 +895,7 @@ export class ChangeModeAction extends Action { }); if (hasLanguageSupport) { - picks.unshift({ type: 'separator', border: true, label: nls.localize('languagesPicks', "languages (identifier)") }); + picks.unshift({ type: 'separator', label: nls.localize('languagesPicks', "languages (identifier)") }); } // Offer action to configure via settings @@ -1079,7 +1079,7 @@ class ChangeIndentationAction extends Action { }; }); - picks.splice(3, 0, { type: 'separator', label: nls.localize('indentConvert', "convert file"), border: true }); + picks.splice(3, 0, { type: 'separator', label: nls.localize('indentConvert', "convert file") }); picks.unshift({ type: 'separator', label: nls.localize('indentView', "change view") }); return this.quickInputService.pick(picks, { placeHolder: nls.localize('pickAction', "Select Action"), matchOnDetail: true }).then(action => action && action.run()); @@ -1231,7 +1231,7 @@ export class ChangeEncodingAction extends Action { // If we have a guessed encoding, show it first unless it matches the configured encoding if (guessedEncoding && configuredEncoding !== guessedEncoding && SUPPORTED_ENCODINGS[guessedEncoding]) { - picks.unshift({ type: 'separator', border: true }); + picks.unshift({ type: 'separator' }); picks.unshift({ id: guessedEncoding, label: SUPPORTED_ENCODINGS[guessedEncoding].labelLong, description: nls.localize('guessedEncoding', "Guessed from content") }); } diff --git a/src/vs/workbench/browser/parts/quickinput/quickInput.css b/src/vs/workbench/browser/parts/quickinput/quickInput.css index 514dc145b727d..690286ea03324 100644 --- a/src/vs/workbench/browser/parts/quickinput/quickInput.css +++ b/src/vs/workbench/browser/parts/quickinput/quickInput.css @@ -113,12 +113,22 @@ } .quick-input-list .quick-input-list-entry { + box-sizing: border-box; overflow: hidden; display: flex; height: 100%; padding: 0 6px; } +.quick-input-list .quick-input-list-entry.quick-input-list-separator-border { + border-top-width: 1px; + border-top-style: solid; +} + +.quick-input-list .monaco-list-row:first-child .quick-input-list-entry.quick-input-list-separator-border { + border-top-style: none; +} + .quick-input-list .quick-input-list-label { overflow: hidden; display: flex; @@ -179,12 +189,6 @@ margin-right: 0; } -.quick-input-list .quick-input-list-separator-border { - border-top-width: 1px; - border-top-style: solid; - box-sizing: border-box; -} - .quick-input-list .quick-input-list-entry-action-bar { display: none; flex: 0; diff --git a/src/vs/workbench/browser/parts/quickinput/quickInputList.ts b/src/vs/workbench/browser/parts/quickinput/quickInputList.ts index ef9e78991825b..0b2ecb2d2654b 100644 --- a/src/vs/workbench/browser/parts/quickinput/quickInputList.ts +++ b/src/vs/workbench/browser/parts/quickinput/quickInputList.ts @@ -152,7 +152,7 @@ class ListElementRenderer implements IRenderer first.label.localeCompare(second.label)); const picks = candidates.map(c => ({ label: c.label, debugger: c })); - return this.quickInputService.pick<(typeof picks)[0]>([...picks, { type: 'separator', border: true }, { label: 'More...', debugger: undefined }], { placeHolder: nls.localize('selectDebug', "Select Environment") }) + return this.quickInputService.pick<(typeof picks)[0]>([...picks, { type: 'separator' }, { label: 'More...', debugger: undefined }], { placeHolder: nls.localize('selectDebug', "Select Environment") }) .then(picked => { if (picked.debugger) { return picked.debugger; diff --git a/src/vs/workbench/parts/snippets/electron-browser/configureSnippets.ts b/src/vs/workbench/parts/snippets/electron-browser/configureSnippets.ts index a9bf617716534..24ad084aa27b3 100644 --- a/src/vs/workbench/parts/snippets/electron-browser/configureSnippets.ts +++ b/src/vs/workbench/parts/snippets/electron-browser/configureSnippets.ts @@ -190,7 +190,7 @@ CommandsRegistry.registerCommand(id, async accessor => { const newGlobalPick = { label: nls.localize('new.global', "New Global Snippets file...") }; if (existing.length > 0) { existing.unshift({ type: 'separator', label: nls.localize('group.global', "Existing Snippets") }); - existing.push({ type: 'separator', border: true, label: nls.localize('new.global.sep', "New Snippets") }); + existing.push({ type: 'separator', label: nls.localize('new.global.sep', "New Snippets") }); } else { existing.push({ type: 'separator', label: nls.localize('new.global.sep', "New Snippets") }); } diff --git a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts index fee6ca9b81238..f6c79e586a737 100644 --- a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts +++ b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts @@ -894,7 +894,7 @@ class TaskService implements ITaskService { } if (entries.length > 0) { entries = entries.sort((a, b) => a.label.localeCompare(b.label)); - entries.unshift({ type: 'separator', border: true, label: nls.localize('TaskService.associate', 'associate') }); + entries.unshift({ type: 'separator', label: nls.localize('TaskService.associate', 'associate') }); entries.unshift( { label: nls.localize('TaskService.attachProblemMatcher.continueWithout', 'Continue without scanning the task output'), matcher: undefined }, { label: nls.localize('TaskService.attachProblemMatcher.never', 'Never scan the task output'), matcher: undefined, never: true }, @@ -1804,9 +1804,9 @@ class TaskService implements ITaskService { } return { label: task._label, description, task }; }; - function fillEntries(entries: QuickPickInput[], tasks: Task[], groupLabel: string, withBorder: boolean = false): void { + function fillEntries(entries: QuickPickInput[], tasks: Task[], groupLabel: string): void { if (tasks.length) { - entries.push({ type: 'separator', label: groupLabel, border: withBorder }); + entries.push({ type: 'separator', label: groupLabel }); } for (let task of tasks) { let entry: TaskQuickPickEntry = TaskQuickPickEntry(task); @@ -1848,13 +1848,11 @@ class TaskService implements ITaskService { } } const sorter = this.createSorter(); - let hasRecentlyUsed: boolean = recent.length > 0; fillEntries(entries, recent, nls.localize('recentlyUsed', 'recently used tasks')); configured = configured.sort((a, b) => sorter.compare(a, b)); - let hasConfigured = configured.length > 0; - fillEntries(entries, configured, nls.localize('configured', 'configured tasks'), hasRecentlyUsed); + fillEntries(entries, configured, nls.localize('configured', 'configured tasks')); detected = detected.sort((a, b) => sorter.compare(a, b)); - fillEntries(entries, detected, nls.localize('detected', 'detected tasks'), hasRecentlyUsed || hasConfigured); + fillEntries(entries, detected, nls.localize('detected', 'detected tasks')); } } else { if (sort) { @@ -2274,7 +2272,7 @@ class TaskService implements ITaskService { if (needsCreateOrOpen) { let label = stats[0] !== void 0 ? openLabel : createLabel; if (entries.length) { - entries.push({ type: 'separator', border: true }); + entries.push({ type: 'separator' }); } entries.push({ label, folder: this.contextService.getWorkspace().folders[0] }); } @@ -2288,14 +2286,14 @@ class TaskService implements ITaskService { for (let i = 0; i < tasks.length; i++) { let entry: EntryType = { label: tasks[i]._label, task: tasks[i], description: folder.name }; if (i === 0) { - entries.push({ type: 'separator', label: folder.name, border: index > 0 }); + entries.push({ type: 'separator', label: folder.name }); } entries.push(entry); } } else { let label = stats[index] !== void 0 ? openLabel : createLabel; let entry: EntryType = { label, folder: folder }; - entries.push({ type: 'separator', label: folder.name, border: index > 0 }); + entries.push({ type: 'separator', label: folder.name }); entries.push(entry); } index++; diff --git a/src/vs/workbench/parts/themes/electron-browser/themes.contribution.ts b/src/vs/workbench/parts/themes/electron-browser/themes.contribution.ts index 15d021df4fcde..524a0915457ba 100644 --- a/src/vs/workbench/parts/themes/electron-browser/themes.contribution.ts +++ b/src/vs/workbench/parts/themes/electron-browser/themes.contribution.ts @@ -51,8 +51,8 @@ export class SelectColorThemeAction extends Action { const picks: QuickPickInput[] = [].concat( toEntries(themes.filter(t => t.type === LIGHT), localize('themes.category.light', "light themes")), - toEntries(themes.filter(t => t.type === DARK), localize('themes.category.dark', "dark themes"), true), - toEntries(themes.filter(t => t.type === HIGH_CONTRAST), localize('themes.category.hc', "high contrast themes"), true), + toEntries(themes.filter(t => t.type === DARK), localize('themes.category.dark', "dark themes")), + toEntries(themes.filter(t => t.type === HIGH_CONTRAST), localize('themes.category.hc', "high contrast themes")), configurationEntries(this.extensionGalleryService, localize('installColorThemes', "Install Additional Color Themes...")) ); @@ -153,8 +153,7 @@ function configurationEntries(extensionGalleryService: IExtensionGalleryService, if (extensionGalleryService.isEnabled()) { return [ { - type: 'separator', - border: true + type: 'separator' }, { id: void 0, @@ -173,12 +172,12 @@ function openExtensionViewlet(viewletService: IViewletService, query: string) { }); } -function toEntries(themes: (IColorTheme | IFileIconTheme)[], label?: string, border = false) { +function toEntries(themes: (IColorTheme | IFileIconTheme)[], label?: string) { const toEntry = theme => { id: theme.id, label: theme.label, description: theme.description }; const sorter = (t1: IQuickPickItem, t2: IQuickPickItem) => t1.label.localeCompare(t2.label); let entries: QuickPickInput[] = themes.map(toEntry).sort(sorter); - if (entries.length > 0 && (label || border)) { - entries.unshift({ type: 'separator', label, border }); + if (entries.length > 0 && label) { + entries.unshift({ type: 'separator', label }); } return entries; }