diff --git a/src/vs/editor/contrib/referenceSearch/referencesWidget.ts b/src/vs/editor/contrib/referenceSearch/referencesWidget.ts index 136e54c22a8466aa7963f4411c1b95426a55c74f..ad76bcc697434dbf1eb1c6d4a6748589ba1bd140 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 d283b200549efdc5ee94736965e754b9307202ee..0dfaf4d62778fc6fc24d58f14fe11c672048c512 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 98235ba28b66d0b9ac54cf5140d7363407cf00f6..c0f862aab43247307194d09b7f378eaf4b60bb64 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 1ab63b6f749d8b03dc533af9eda6696dd88b39be..0e90dbc8772688b8422c1a9d4d5af13bba684086 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 7b162f1caab077fcaa419eddda73bbe9906a1c5d..4b4295d0fa89a6be54cb777645125c52872087c6 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 22a60851431adf7ac0db848b781d1041e01422d5..3816e33cb70eaa948fe898f43bf4c1d0d948eb57 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 123bcb9be6c56a0edd95787663984d05510fbd1f..29e081c325bd8e1eef6dc5531cc5e50527694535 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 30c4fca449631e1b62d6d087782fdac3d420e699..8b8808966d983ea6b76592ad04d153d291a15e63 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 6ea2b74afef8092ec08e667089edd3ae5f7d2007..6f496f50e84f0b3d64745d915377806402042171 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 e157a61a862e557e83a7f050e3a7d4449b77aa64..612838da06077e705af17ebbcefd54f6729a5971 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 dbbd7bfeb299dc24f7ea7ef37918d2adad2a3bdc..3384198ad8908fa50195d2ff26ef0a36b7c851a7 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 f101cbd65d6f04484021c3640380ce844231be61..8e6b31e1f554017b874fc77a42fb7c7d7ce3ab69 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 69e6766f25c2d6b8165e4a68a850089989975584..9d83230c09a74b753923d13fa70ad0a1b63c6ef0 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 9d28ff82fa45e453ea60502534e461d97a358018..d60b9e72bcbb39eb503c6f60afe982de99720153 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 b5f34511a478d1fc69a81bdf23464812cc1c3589..15159535930aecda028b6e34ddc96d4f8cb78f07 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 d411f925e0916f1adda020a03fa75079165f046c..5b23effe56a4bd746a0962a044f2a56421722124 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 6cd0676b79cc8d1a2b199ee8ceea891ce8adc161..e0cc6d76465bd26413e9ebdecde658cf67898086 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 4171d03edc2c3202a33982442544efff4604142d..3fd4c0eac5e9611c40ca75f06dce2c74a71c8c08 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 dfdeb0359ed470dc460028987d355f1a2bd7281a..9cfcc4ed51b32f2a6942dd2175d1c05908da540d 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 333c9d7dc94a3e84de8906167deeb3fed41e1323..49323ddd49334818cd3e8b25abd877584ef34186 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);