From 090d29b349b0a0e52c266546fbcec76f4b493b49 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Sun, 28 Jan 2018 18:03:33 +0100 Subject: [PATCH] :lipstick: list service consumers --- .../referenceSearch/referencesWidget.ts | 3 +- src/vs/platform/list/browser/listService.ts | 98 +++++++++++++++---- .../workbench/browser/parts/views/treeView.ts | 2 +- .../browser/parts/views/viewsViewlet.ts | 6 +- .../parts/debug/common/debugModel.ts | 4 +- .../parts/debug/common/debugSource.ts | 4 +- .../debug/electron-browser/callStackView.ts | 5 +- .../debug/electron-browser/debugHover.ts | 3 +- .../parts/debug/electron-browser/repl.ts | 3 +- .../debug/electron-browser/variablesView.ts | 3 +- .../electron-browser/watchExpressionsView.ts | 3 +- .../extensions/browser/extensionEditor.ts | 3 +- .../electron-browser/extensionsViews.ts | 4 +- .../electron-browser/views/explorerView.ts | 3 +- .../electron-browser/views/explorerViewer.ts | 23 +---- .../electron-browser/views/openEditorsView.ts | 5 +- .../parts/markers/browser/markersPanel.ts | 3 +- .../preferences/browser/keybindingsEditor.ts | 2 +- .../parts/scm/electron-browser/scmViewlet.ts | 4 +- .../parts/search/browser/searchViewlet.ts | 3 +- 20 files changed, 110 insertions(+), 74 deletions(-) diff --git a/src/vs/editor/contrib/referenceSearch/referencesWidget.ts b/src/vs/editor/contrib/referenceSearch/referencesWidget.ts index 136e54c22a8..ad76bcc6974 100644 --- a/src/vs/editor/contrib/referenceSearch/referencesWidget.ts +++ b/src/vs/editor/contrib/referenceSearch/referencesWidget.ts @@ -641,8 +641,7 @@ export class ReferenceWidget extends PeekViewWidget { var options: tree.ITreeOptions = { twistiePixels: 20, - ariaLabel: nls.localize('treeAriaLabel', "References"), - keyboardSupport: false + ariaLabel: nls.localize('treeAriaLabel', "References") }; this._tree = this._instantiationService.createInstance(WorkbenchTree, div.getHTMLElement(), config, options); diff --git a/src/vs/platform/list/browser/listService.ts b/src/vs/platform/list/browser/listService.ts index d283b200549..0dfaf4d6277 100644 --- a/src/vs/platform/list/browser/listService.ts +++ b/src/vs/platform/list/browser/listService.ts @@ -117,11 +117,22 @@ class MultipleSelectionController implements IMultipleSelectionController } } +function handleMultiSelectSupport(options: IListOptions, configurationService: IConfigurationService): IListOptions { + if (options.multipleSelectionSupport === true && !options.multipleSelectionController) { + options.multipleSelectionController = new MultipleSelectionController(configurationService); + } + + return options; +} + export class WorkbenchList extends List { readonly contextKeyService: IContextKeyService; + private listDoubleSelection: IContextKey; + private _useAltAsMultipleSelectionModifier: boolean; + constructor( container: HTMLElement, delegate: IDelegate, @@ -130,31 +141,45 @@ export class WorkbenchList extends List { @IContextKeyService contextKeyService: IContextKeyService, @IListService listService: IListService, @IThemeService themeService: IThemeService, - @IConfigurationService configurationService: IConfigurationService + @IConfigurationService private configurationService: IConfigurationService ) { - const multipleSelectionSupport = !(options.multipleSelectionSupport === false); + super(container, delegate, renderers, mixin(handleMultiSelectSupport(options, configurationService), { keyboardSupport: false } as IListOptions, false)); - if (multipleSelectionSupport && !options.multipleSelectionController) { - options.multipleSelectionController = new MultipleSelectionController(configurationService); - } - - super(container, delegate, renderers, mixin(options, useAltAsMultipleSelectionModifier(configurationService))); this.contextKeyService = createScopedContextKeyService(contextKeyService, this); this.listDoubleSelection = WorkbenchListDoubleSelection.bindTo(this.contextKeyService); + this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(configurationService); + this.disposables.push(combinedDisposable([ this.contextKeyService, (listService as ListService).register(this), attachListStyler(this, themeService), this.onSelectionChange(() => this.listDoubleSelection.set(this.getSelection().length === 2)) ])); + + this.registerListeners(); + } + + public get useAltAsMultipleSelectionModifier(): boolean { + return this._useAltAsMultipleSelectionModifier; + } + + private registerListeners(): void { + this.disposables.push(this.configurationService.onDidChangeConfiguration(e => { + if (e.affectsConfiguration(multiSelectModifierSettingKey)) { + this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(this.configurationService); + } + })); } } export class WorkbenchPagedList extends PagedList { readonly contextKeyService: IContextKeyService; - private disposable: IDisposable; + + private disposables: IDisposable[] = []; + + private _useAltAsMultipleSelectionModifier: boolean; constructor( container: HTMLElement, @@ -164,57 +189,90 @@ export class WorkbenchPagedList extends PagedList { @IContextKeyService contextKeyService: IContextKeyService, @IListService listService: IListService, @IThemeService themeService: IThemeService, - @IConfigurationService configurationService: IConfigurationService + @IConfigurationService private configurationService: IConfigurationService ) { - const multipleSelectionSupport = !(options.multipleSelectionSupport === false); - - if (multipleSelectionSupport && !options.multipleSelectionController) { - options.multipleSelectionController = new MultipleSelectionController(configurationService); - } + super(container, delegate, renderers, mixin(handleMultiSelectSupport(options, configurationService), { keyboardSupport: false } as IListOptions, false)); - super(container, delegate, renderers, mixin(options, useAltAsMultipleSelectionModifier(configurationService))); this.contextKeyService = createScopedContextKeyService(contextKeyService, this); - this.disposable = combinedDisposable([ + this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(configurationService); + + this.disposables.push(combinedDisposable([ this.contextKeyService, (listService as ListService).register(this), attachListStyler(this, themeService) - ]); + ])); + + this.registerListeners(); + } + + public get useAltAsMultipleSelectionModifier(): boolean { + return this._useAltAsMultipleSelectionModifier; + } + + private registerListeners(): void { + this.disposables.push(this.configurationService.onDidChangeConfiguration(e => { + if (e.affectsConfiguration(multiSelectModifierSettingKey)) { + this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(this.configurationService); + } + })); } dispose(): void { - this.disposable.dispose(); + this.disposables = dispose(this.disposables); } } export class WorkbenchTree extends Tree { readonly contextKeyService: IContextKeyService; + protected disposables: IDisposable[] = []; + private listDoubleSelection: IContextKey; + private _useAltAsMultipleSelectionModifier: boolean; + constructor( container: HTMLElement, configuration: ITreeConfiguration, options: ITreeOptions, @IContextKeyService contextKeyService: IContextKeyService, @IListService listService: IListService, - @IThemeService themeService: IThemeService + @IThemeService themeService: IThemeService, + @IConfigurationService private configurationService: IConfigurationService ) { - super(container, configuration, options); + super(container, configuration, mixin(options, { keyboardSupport: false } as ITreeOptions, false)); this.contextKeyService = createScopedContextKeyService(contextKeyService, this); this.listDoubleSelection = WorkbenchListDoubleSelection.bindTo(this.contextKeyService); + this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(configurationService); + this.disposables.push( this.contextKeyService, (listService as ListService).register(this), attachListStyler(this, themeService) ); + + this.registerListeners(); + } + + public get useAltAsMultipleSelectionModifier(): boolean { + return this._useAltAsMultipleSelectionModifier; + } + + private registerListeners(): void { this.disposables.push(this.onDidChangeSelection(() => { const selection = this.getSelection(); this.listDoubleSelection.set(selection && selection.length === 2); })); + + this.disposables.push(this.configurationService.onDidChangeConfiguration(e => { + if (e.affectsConfiguration(multiSelectModifierSettingKey)) { + this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(this.configurationService); + } + })); } dispose(): void { diff --git a/src/vs/workbench/browser/parts/views/treeView.ts b/src/vs/workbench/browser/parts/views/treeView.ts index 98235ba28b6..c0f862aab43 100644 --- a/src/vs/workbench/browser/parts/views/treeView.ts +++ b/src/vs/workbench/browser/parts/views/treeView.ts @@ -92,7 +92,7 @@ export class TreeView extends TreeViewsViewletPanel { const tree = this.instantiationService.createInstance(FileIconThemableWorkbenchTree, container.getHTMLElement(), { dataSource, renderer, controller }, - { keyboardSupport: false } + {} ); tree.contextKeyService.createKey(this.id, true); diff --git a/src/vs/workbench/browser/parts/views/viewsViewlet.ts b/src/vs/workbench/browser/parts/views/viewsViewlet.ts index 1ab63b6f749..0e90dbc8772 100644 --- a/src/vs/workbench/browser/parts/views/viewsViewlet.ts +++ b/src/vs/workbench/browser/parts/views/viewsViewlet.ts @@ -31,6 +31,7 @@ import { WorkbenchTree, IListService } from 'vs/platform/list/browser/listServic import { IWorkbenchThemeService, IFileIconTheme } from 'vs/workbench/services/themes/common/workbenchThemeService'; import { ITreeConfiguration, ITreeOptions } from 'vs/base/parts/tree/browser/tree'; import Event, { Emitter } from 'vs/base/common/event'; +import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; export interface IViewOptions extends IPanelOptions { id: string; @@ -771,9 +772,10 @@ export class FileIconThemableWorkbenchTree extends WorkbenchTree { options: ITreeOptions, @IContextKeyService contextKeyService: IContextKeyService, @IListService listService: IListService, - @IThemeService themeService: IWorkbenchThemeService + @IThemeService themeService: IWorkbenchThemeService, + @IConfigurationService configurationService: IConfigurationService ) { - super(container, configuration, { ...options, ...{ showTwistie: false, twistiePixels: 12 } }, contextKeyService, listService, themeService); + super(container, configuration, { ...options, ...{ showTwistie: false, twistiePixels: 12 } }, contextKeyService, listService, themeService, configurationService); DOM.addClass(container, 'file-icon-themable-tree'); DOM.addClass(container, 'show-file-icons'); diff --git a/src/vs/workbench/parts/debug/common/debugModel.ts b/src/vs/workbench/parts/debug/common/debugModel.ts index 7b162f1caab..4b4295d0fa8 100644 --- a/src/vs/workbench/parts/debug/common/debugModel.ts +++ b/src/vs/workbench/parts/debug/common/debugModel.ts @@ -380,9 +380,9 @@ export class StackFrame implements IStackFrame { return `${this.name} (${this.source.inMemory ? this.source.name : this.source.uri.fsPath}:${this.range.startLineNumber})`; } - public openInEditor(editorService: IWorkbenchEditorService, preserveFocus?: boolean, sideBySide?: boolean): TPromise { + public openInEditor(editorService: IWorkbenchEditorService, preserveFocus?: boolean, sideBySide?: boolean, pinned?: boolean): TPromise { return !this.source.available ? TPromise.as(null) : - this.source.openInEditor(editorService, this.range, preserveFocus, sideBySide); + this.source.openInEditor(editorService, this.range, preserveFocus, sideBySide, pinned); } } diff --git a/src/vs/workbench/parts/debug/common/debugSource.ts b/src/vs/workbench/parts/debug/common/debugSource.ts index 22a60851431..3816e33cb70 100644 --- a/src/vs/workbench/parts/debug/common/debugSource.ts +++ b/src/vs/workbench/parts/debug/common/debugSource.ts @@ -56,7 +56,7 @@ export class Source { return this.uri.scheme === DEBUG_SCHEME; } - public openInEditor(editorService: IWorkbenchEditorService, selection: IRange, preserveFocus?: boolean, sideBySide?: boolean): TPromise { + public openInEditor(editorService: IWorkbenchEditorService, selection: IRange, preserveFocus?: boolean, sideBySide?: boolean, pinned?: boolean): TPromise { return !this.available ? TPromise.as(null) : editorService.openEditor({ resource: this.uri, description: this.origin, @@ -65,7 +65,7 @@ export class Source { selection, revealIfVisible: true, revealInCenterIfOutsideViewport: true, - pinned: !preserveFocus && !this.inMemory + pinned: pinned || (!preserveFocus && !this.inMemory) } }, sideBySide); } diff --git a/src/vs/workbench/parts/debug/electron-browser/callStackView.ts b/src/vs/workbench/parts/debug/electron-browser/callStackView.ts index 123bcb9be6c..29e081c325b 100644 --- a/src/vs/workbench/parts/debug/electron-browser/callStackView.ts +++ b/src/vs/workbench/parts/debug/electron-browser/callStackView.ts @@ -102,8 +102,7 @@ export class CallStackView extends TreeViewsViewletPanel { controller }, { ariaLabel: nls.localize({ comment: ['Debug is a noun in this context, not a verb.'], key: 'callStackAriaLabel' }, "Debug Call Stack"), - twistiePixels, - keyboardSupport: false + twistiePixels }); const fileResultsNavigation = new FileResultsNavigation(this.tree); @@ -116,7 +115,7 @@ export class CallStackView extends TreeViewsViewletPanel { const element = e.element; if (element instanceof StackFrame) { this.debugService.focusStackFrame(element, element.thread, element.thread.process, true); - element.openInEditor(this.editorService, e.editorOptions.preserveFocus, e.sideBySide).done(undefined, errors.onUnexpectedError); + element.openInEditor(this.editorService, e.editorOptions.preserveFocus, e.sideBySide, e.editorOptions.pinned).done(undefined, errors.onUnexpectedError); } if (element instanceof Thread) { this.debugService.focusStackFrame(undefined, element, element.process, true); diff --git a/src/vs/workbench/parts/debug/electron-browser/debugHover.ts b/src/vs/workbench/parts/debug/electron-browser/debugHover.ts index 30c4fca4496..8b8808966d9 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugHover.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugHover.ts @@ -75,8 +75,7 @@ export class DebugHoverWidget implements IContentWidget { }, { indentPixels: 6, twistiePixels: 15, - ariaLabel: nls.localize('treeAriaLabel', "Debug Hover"), - keyboardSupport: false + ariaLabel: nls.localize('treeAriaLabel', "Debug Hover") }); this.valueContainer = $('.value'); diff --git a/src/vs/workbench/parts/debug/electron-browser/repl.ts b/src/vs/workbench/parts/debug/electron-browser/repl.ts index 6ea2b74afef..6f496f50e84 100644 --- a/src/vs/workbench/parts/debug/electron-browser/repl.ts +++ b/src/vs/workbench/parts/debug/electron-browser/repl.ts @@ -49,8 +49,7 @@ const $ = dom.$; const replTreeOptions: ITreeOptions = { twistiePixels: 20, - ariaLabel: nls.localize('replAriaLabel', "Read Eval Print Loop Panel"), - keyboardSupport: false + ariaLabel: nls.localize('replAriaLabel', "Read Eval Print Loop Panel") }; const HISTORY_STORAGE_KEY = 'debug.repl.history'; diff --git a/src/vs/workbench/parts/debug/electron-browser/variablesView.ts b/src/vs/workbench/parts/debug/electron-browser/variablesView.ts index e157a61a862..612838da060 100644 --- a/src/vs/workbench/parts/debug/electron-browser/variablesView.ts +++ b/src/vs/workbench/parts/debug/electron-browser/variablesView.ts @@ -90,8 +90,7 @@ export class VariablesView extends TreeViewsViewletPanel { controller: this.instantiationService.createInstance(VariablesController, new VariablesActionProvider(this.debugService, this.keybindingService), MenuId.DebugVariablesContext) }, { ariaLabel: nls.localize('variablesAriaTreeLabel', "Debug Variables"), - twistiePixels, - keyboardSupport: false + twistiePixels }); CONTEXT_VARIABLES_FOCUSED.bindTo(this.tree.contextKeyService); diff --git a/src/vs/workbench/parts/debug/electron-browser/watchExpressionsView.ts b/src/vs/workbench/parts/debug/electron-browser/watchExpressionsView.ts index dbbd7bfeb29..3384198ad89 100644 --- a/src/vs/workbench/parts/debug/electron-browser/watchExpressionsView.ts +++ b/src/vs/workbench/parts/debug/electron-browser/watchExpressionsView.ts @@ -69,8 +69,7 @@ export class WatchExpressionsView extends TreeViewsViewletPanel { dnd: new WatchExpressionsDragAndDrop(this.debugService) }, { ariaLabel: nls.localize({ comment: ['Debug is a noun in this context, not a verb.'], key: 'watchAriaTreeLabel' }, "Debug Watch Expressions"), - twistiePixels, - keyboardSupport: false + twistiePixels }); CONTEXT_WATCH_EXPRESSIONS_FOCUSED.bindTo(this.tree.contextKeyService); diff --git a/src/vs/workbench/parts/extensions/browser/extensionEditor.ts b/src/vs/workbench/parts/extensions/browser/extensionEditor.ts index f101cbd65d6..8e6b31e1f55 100644 --- a/src/vs/workbench/parts/extensions/browser/extensionEditor.ts +++ b/src/vs/workbench/parts/extensions/browser/extensionEditor.ts @@ -526,8 +526,7 @@ export class ExtensionEditor extends BaseEditor { controller }, { indentPixels: 40, - twistiePixels: 20, - keyboardSupport: false + twistiePixels: 20 }); tree.setInput(extensionDependencies); diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionsViews.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionsViews.ts index 69e6766f25c..9d83230c09a 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionsViews.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionsViews.ts @@ -78,8 +78,7 @@ export class ExtensionsListView extends ViewsViewletPanel { const delegate = new Delegate(); const renderer = this.instantiationService.createInstance(Renderer); this.list = this.instantiationService.createInstance(WorkbenchPagedList, this.extensionsList, delegate, [renderer], { - ariaLabel: localize('extensions', "Extensions"), - keyboardSupport: false + ariaLabel: localize('extensions', "Extensions") }); chain(this.list.onSelectionChange) @@ -443,6 +442,7 @@ export class ExtensionsListView extends ViewsViewletPanel { const activeEditorInput = this.editorService.getActiveEditorInput(); this.editorInputService.pinEditor(activeEditor.position, activeEditorInput); + activeEditor.focus(); } diff --git a/src/vs/workbench/parts/files/electron-browser/views/explorerView.ts b/src/vs/workbench/parts/files/electron-browser/views/explorerView.ts index 9d28ff82fa4..d60b9e72bcb 100644 --- a/src/vs/workbench/parts/files/electron-browser/views/explorerView.ts +++ b/src/vs/workbench/parts/files/electron-browser/views/explorerView.ts @@ -403,8 +403,7 @@ export class ExplorerView extends TreeViewsViewletPanel implements IExplorerView accessibilityProvider }, { autoExpandSingleChildren: true, - ariaLabel: nls.localize('treeAriaLabel', "Files Explorer"), - keyboardSupport: false + ariaLabel: nls.localize('treeAriaLabel', "Files Explorer") }); // Bind context keys diff --git a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts index b5f34511a47..15159535930 100644 --- a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts +++ b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts @@ -56,7 +56,7 @@ import { extractResources } from 'vs/workbench/browser/editor'; import { relative } from 'path'; import { DataTransfers } from 'vs/base/browser/dnd'; import { distinctParents } from 'vs/base/common/resources'; -import { WorkbenchTree, multiSelectModifierSettingKey } from 'vs/platform/list/browser/listService'; +import { WorkbenchTree } from 'vs/platform/list/browser/listService'; export class FileDataSource implements IDataSource { constructor( @@ -330,33 +330,20 @@ export class FileController extends DefaultController implements IDisposable { private contributedContextMenu: IMenu; private toDispose: IDisposable[]; private previousSelectionRangeStop: FileStat; - private useAltAsMultiSelectModifier: boolean; constructor( @IWorkbenchEditorService private editorService: IWorkbenchEditorService, @IContextMenuService private contextMenuService: IContextMenuService, @ITelemetryService private telemetryService: ITelemetryService, @IMenuService private menuService: IMenuService, - @IContextKeyService contextKeyService: IContextKeyService, - @IConfigurationService private configurationService: IConfigurationService + @IContextKeyService contextKeyService: IContextKeyService ) { super({ clickBehavior: ClickBehavior.ON_MOUSE_UP /* do not change to not break DND */, keyboardSupport: false /* handled via IListService */ }); - this.useAltAsMultiSelectModifier = configurationService.getValue(multiSelectModifierSettingKey) === 'alt'; this.toDispose = []; - - this.registerListeners(); - } - - private registerListeners(): void { - this.toDispose.push(this.configurationService.onDidChangeConfiguration(e => { - if (e.affectsConfiguration(multiSelectModifierSettingKey)) { - this.useAltAsMultiSelectModifier = this.configurationService.getValue(multiSelectModifierSettingKey) === 'alt'; - } - })); } - public onLeftClick(tree: ITree, stat: FileStat | Model, event: IMouseEvent, origin: string = 'mouse'): boolean { + public onLeftClick(tree: WorkbenchTree, stat: FileStat | Model, event: IMouseEvent, origin: string = 'mouse'): boolean { const payload = { origin: origin }; const isDoubleClick = (origin === 'mouse' && event.detail === 2); @@ -394,7 +381,7 @@ export class FileController extends DefaultController implements IDisposable { } // Allow to multiselect - if ((this.useAltAsMultiSelectModifier && event.altKey) || !this.useAltAsMultiSelectModifier && (event.ctrlKey || event.metaKey)) { + if ((tree.useAltAsMultipleSelectionModifier && event.altKey) || !tree.useAltAsMultipleSelectionModifier && (event.ctrlKey || event.metaKey)) { const selection = tree.getSelection(); this.previousSelectionRangeStop = undefined; if (selection.indexOf(stat) >= 0) { @@ -435,7 +422,7 @@ export class FileController extends DefaultController implements IDisposable { if (!stat.isDirectory) { let sideBySide = false; if (event) { - sideBySide = this.useAltAsMultiSelectModifier ? (event.ctrlKey || event.metaKey) : event.altKey; + sideBySide = tree.useAltAsMultipleSelectionModifier ? (event.ctrlKey || event.metaKey) : event.altKey; } this.openEditor(stat, { preserveFocus, sideBySide, pinned: isDoubleClick }); diff --git a/src/vs/workbench/parts/files/electron-browser/views/openEditorsView.ts b/src/vs/workbench/parts/files/electron-browser/views/openEditorsView.ts index d411f925e09..5b23effe56a 100644 --- a/src/vs/workbench/parts/files/electron-browser/views/openEditorsView.ts +++ b/src/vs/workbench/parts/files/electron-browser/views/openEditorsView.ts @@ -28,7 +28,7 @@ import { EditorGroup } from 'vs/workbench/common/editor/editorStacksModel'; import { attachStylerCallback } from 'vs/platform/theme/common/styler'; import { IThemeService } from 'vs/platform/theme/common/themeService'; import { badgeBackground, badgeForeground, contrastBorder } from 'vs/platform/theme/common/colorRegistry'; -import { WorkbenchList, useAltAsMultipleSelectionModifier } from 'vs/platform/list/browser/listService'; +import { WorkbenchList } from 'vs/platform/list/browser/listService'; import { IDelegate, IRenderer, IListContextMenuEvent, IListMouseEvent } from 'vs/base/browser/ui/list/list'; import { EditorLabel } from 'vs/workbench/browser/labels'; import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar'; @@ -153,7 +153,6 @@ export class OpenEditorsView extends ViewsViewletPanel { new EditorGroupRenderer(this.keybindingService, this.instantiationService, this.editorGroupService), new OpenEditorRenderer(getSelectedElements, this.instantiationService, this.keybindingService, this.configurationService, this.editorGroupService) ], { - keyboardSupport: false, identityProvider: element => element instanceof OpenEditor ? element.getId() : element.id.toString() }); @@ -278,7 +277,7 @@ export class OpenEditorsView extends ViewsViewletPanel { const position = this.model.positionOfGroup(element.group); this.editorService.closeEditor(position, element.editor).done(null, errors.onUnexpectedError); } else { - const sideBySide = useAltAsMultipleSelectionModifier(this.configurationService) ? event.browserEvent.altKey : (event.browserEvent.ctrlKey || event.browserEvent.metaKey); + const sideBySide = this.list.useAltAsMultipleSelectionModifier ? (event.browserEvent.ctrlKey || event.browserEvent.metaKey) : event.browserEvent.altKey; this.openEditor(element, { preserveFocus: !isDoubleClick, pinned: isDoubleClick, sideBySide }); } } diff --git a/src/vs/workbench/parts/markers/browser/markersPanel.ts b/src/vs/workbench/parts/markers/browser/markersPanel.ts index 6cd0676b79c..e0cc6d76465 100644 --- a/src/vs/workbench/parts/markers/browser/markersPanel.ts +++ b/src/vs/workbench/parts/markers/browser/markersPanel.ts @@ -206,8 +206,7 @@ export class MarkersPanel extends Panel { }, { indentPixels: 0, twistiePixels: 20, - ariaLabel: Messages.MARKERS_PANEL_ARIA_LABEL_PROBLEMS_TREE, - keyboardSupport: false + ariaLabel: Messages.MARKERS_PANEL_ARIA_LABEL_PROBLEMS_TREE }); Constants.MarkerFocusContextKey.bindTo(this.tree.contextKeyService); diff --git a/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts b/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts index 4171d03edc2..3fd4c0eac5e 100644 --- a/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts +++ b/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts @@ -333,7 +333,7 @@ export class KeybindingsEditor extends BaseEditor implements IKeybindingsEditor this.keybindingsListContainer = DOM.append(parent, $('.keybindings-list-container')); this.keybindingsList = this._register(this.instantiationService.createInstance(WorkbenchList, this.keybindingsListContainer, new Delegate(), [new KeybindingHeaderRenderer(), new KeybindingItemRenderer(this, this.keybindingsService)], - { identityProvider: e => e.id, keyboardSupport: false, mouseSupport: true, ariaLabel: localize('keybindingsLabel', "Keybindings") })); + { identityProvider: e => e.id, mouseSupport: true, ariaLabel: localize('keybindingsLabel', "Keybindings") })); this._register(this.keybindingsList.onContextMenu(e => this.onContextMenu(e))); this._register(this.keybindingsList.onFocusChange(e => this.onFocusChange(e))); this._register(this.keybindingsList.onDidFocus(() => { diff --git a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts index dfdeb0359ed..9cfcc4ed51b 100644 --- a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts +++ b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts @@ -854,8 +854,7 @@ export class RepositoryPanel extends ViewletPanel { ]; this.list = this.instantiationService.createInstance(WorkbenchList, this.listContainer, delegate, renderers, { - identityProvider: scmResourceIdentityProvider, - keyboardSupport: false + identityProvider: scmResourceIdentityProvider }); chain(this.list.onOpen) @@ -941,6 +940,7 @@ export class RepositoryPanel extends ViewletPanel { } this.editorGroupService.pinEditor(activeEditor.position, activeEditorInput); + activeEditor.focus(); } private onListContextMenu(e: IListContextMenuEvent): void { diff --git a/src/vs/workbench/parts/search/browser/searchViewlet.ts b/src/vs/workbench/parts/search/browser/searchViewlet.ts index 333c9d7dc94..49323ddd493 100644 --- a/src/vs/workbench/parts/search/browser/searchViewlet.ts +++ b/src/vs/workbench/parts/search/browser/searchViewlet.ts @@ -505,8 +505,7 @@ export class SearchViewlet extends Viewlet { accessibilityProvider: this.instantiationService.createInstance(SearchAccessibilityProvider), dnd }, { - ariaLabel: nls.localize('treeAriaLabel', "Search Results"), - keyboardSupport: false + ariaLabel: nls.localize('treeAriaLabel', "Search Results") }); this.tree.setInput(this.viewModel.searchResult); -- GitLab