diff --git a/src/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget.ts b/src/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget.ts index 42f43d273224b257676f8f20e457b047269443cb..d6f63b99a62ce3c441ab1c6ae90c3e71abeb1a44 100644 --- a/src/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget.ts +++ b/src/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget.ts @@ -200,8 +200,8 @@ export class BreadcrumbsWidget { return this._items[this._focusedItemIdx]; } - setFocused(item: BreadcrumbsItem, payload?: any): void { - this._focus(this._items.indexOf(item), payload); + setFocused(item: BreadcrumbsItem | undefined, payload?: any): void { + this._focus(this._items.indexOf(item!), payload); } focusPrev(payload?: any): any { @@ -256,8 +256,8 @@ export class BreadcrumbsWidget { return this._items[this._selectedItemIdx]; } - setSelection(item: BreadcrumbsItem, payload?: any): void { - this._select(this._items.indexOf(item), payload); + setSelection(item: BreadcrumbsItem | undefined, payload?: any): void { + this._select(this._items.indexOf(item!), payload); } private _select(nth: number, payload: any): void { diff --git a/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts b/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts index dff8a0fad8aff6c52139b48e3c49d988bc5001fa..9a800cf87afc4e54af0208477a7b19d6c5007a15 100644 --- a/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts +++ b/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts @@ -213,7 +213,7 @@ class SwitchSideBarViewAction extends Action { if (!activeViewlet) { return Promise.resolve(); } - let targetViewletId: string; + let targetViewletId: string | undefined; for (let i = 0; i < pinnedViewletIds.length; i++) { if (pinnedViewletIds[i] === activeViewlet.getId()) { targetViewletId = pinnedViewletIds[(i + pinnedViewletIds.length + offset) % pinnedViewletIds.length]; diff --git a/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts b/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts index bb6256c7c25079782614c1c07b67d60bae58e218..947618b4b3231886fb32ef44a2aee83a7b916e38 100644 --- a/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts +++ b/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts @@ -260,9 +260,12 @@ export class BreadcrumbsControl { return true; } - private _getActiveCodeEditor(): ICodeEditor { + private _getActiveCodeEditor(): ICodeEditor | undefined { + if (!this._editorGroup.activeControl) { + return undefined; + } let control = this._editorGroup.activeControl.getControl(); - let editor: ICodeEditor; + let editor: ICodeEditor | undefined; if (isCodeEditor(control)) { editor = control as ICodeEditor; } else if (isDiffEditor(control)) { @@ -313,7 +316,7 @@ export class BreadcrumbsControl { let picker: BreadcrumbsPicker; let editor = this._getActiveCodeEditor(); let editorDecorations: string[] = []; - let editorViewState: ICodeEditorViewState; + let editorViewState: ICodeEditorViewState | undefined; this._contextViewService.showContextView({ render: (parent: HTMLElement) => { @@ -336,7 +339,7 @@ export class BreadcrumbsControl { return; } if (!editorViewState) { - editorViewState = editor.saveViewState(); + editorViewState = editor.saveViewState() || undefined; } const { symbol } = data.target; editor.revealRangeInCenter(symbol.range, ScrollType.Smooth); @@ -538,7 +541,11 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({ handler(accessor) { const groups = accessor.get(IEditorGroupsService); const breadcrumbs = accessor.get(IBreadcrumbsService); - breadcrumbs.getWidget(groups.activeGroup.id).focusNext(); + const widget = breadcrumbs.getWidget(groups.activeGroup.id); + if (!widget) { + return; + } + widget.focusNext(); } }); KeybindingsRegistry.registerCommandAndKeybindingRule({ @@ -554,7 +561,11 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({ handler(accessor) { const groups = accessor.get(IEditorGroupsService); const breadcrumbs = accessor.get(IBreadcrumbsService); - breadcrumbs.getWidget(groups.activeGroup.id).focusPrev(); + const widget = breadcrumbs.getWidget(groups.activeGroup.id); + if (!widget) { + return; + } + widget.focusPrev(); } }); KeybindingsRegistry.registerCommandAndKeybindingRule({ @@ -567,6 +578,9 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({ const groups = accessor.get(IEditorGroupsService); const breadcrumbs = accessor.get(IBreadcrumbsService); const widget = breadcrumbs.getWidget(groups.activeGroup.id); + if (!widget) { + return; + } widget.setSelection(widget.getFocused(), BreadcrumbsControl.Payload_Pick); } }); @@ -580,6 +594,9 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({ const groups = accessor.get(IEditorGroupsService); const breadcrumbs = accessor.get(IBreadcrumbsService); const widget = breadcrumbs.getWidget(groups.activeGroup.id); + if (!widget) { + return; + } widget.setSelection(widget.getFocused(), BreadcrumbsControl.Payload_Reveal); } }); @@ -591,8 +608,12 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({ handler(accessor) { const groups = accessor.get(IEditorGroupsService); const breadcrumbs = accessor.get(IBreadcrumbsService); - breadcrumbs.getWidget(groups.activeGroup.id).setFocused(undefined); - breadcrumbs.getWidget(groups.activeGroup.id).setSelection(undefined); + const widget = breadcrumbs.getWidget(groups.activeGroup.id); + if (!widget) { + return; + } + widget.setFocused(undefined); + widget.setSelection(undefined); groups.activeGroup.activeControl.focus(); } }); diff --git a/src/vs/workbench/browser/parts/editor/editorActions.ts b/src/vs/workbench/browser/parts/editor/editorActions.ts index 19edfde68791a661eb5a208c410671b31ac7e643..05ed83a7bca10119d38c3a07f7e6f263b8039f06 100644 --- a/src/vs/workbench/browser/parts/editor/editorActions.ts +++ b/src/vs/workbench/browser/parts/editor/editorActions.ts @@ -579,7 +579,7 @@ export class CloseLeftEditorsInGroupAction extends Action { } } -function getTarget(editorService: IEditorService, editorGroupService: IEditorGroupsService, context?: IEditorIdentifier): { editor: IEditorInput, group: IEditorGroup } { +function getTarget(editorService: IEditorService, editorGroupService: IEditorGroupsService, context?: IEditorIdentifier): { editor: IEditorInput | null, group: IEditorGroup } { if (context) { return { editor: context.editor, group: editorGroupService.getGroup(context.groupId) }; } diff --git a/src/vs/workbench/contrib/markers/electron-browser/markersPanel.ts b/src/vs/workbench/contrib/markers/electron-browser/markersPanel.ts index 0360e57fecfe2548d274910f2bfcecf4ae2adda1..c7cb237a956c968bf13ef084614932041fefe3d6 100644 --- a/src/vs/workbench/contrib/markers/electron-browser/markersPanel.ts +++ b/src/vs/workbench/contrib/markers/electron-browser/markersPanel.ts @@ -389,7 +389,7 @@ export class MarkersPanel extends Panel implements IMarkerFilterController { })); this._register(Event.any(this.tree.onDidChangeSelection, this.tree.onDidChangeFocus)(() => { - const elements: TreeElement[] = [...this.tree.getSelection(), ...this.tree.getFocus()]; + const elements = [...this.tree.getSelection(), ...this.tree.getFocus()]; for (const element of elements) { if (element instanceof Marker) { const viewModel = this.markersViewModel.getViewModel(element); @@ -467,14 +467,15 @@ export class MarkersPanel extends Panel implements IMarkerFilterController { } private isCurrentResourceGotAddedToMarkersData(changedResources: URI[]) { - if (!this.currentActiveResource) { + const currentlyActiveResource = this.currentActiveResource; + if (!currentlyActiveResource) { return false; } const resourceForCurrentActiveResource = this.getResourceForCurrentActiveResource(); if (resourceForCurrentActiveResource) { return false; } - return changedResources.some(r => r.toString() === this.currentActiveResource.toString()); + return changedResources.some(r => r.toString() === currentlyActiveResource.toString()); } private onActiveEditorChanged(): void { @@ -484,7 +485,7 @@ export class MarkersPanel extends Panel implements IMarkerFilterController { private setCurrentActiveEditor(): void { const activeEditor = this.editorService.activeEditor; - this.currentActiveResource = activeEditor ? activeEditor.getResource() : undefined; + this.currentActiveResource = activeEditor ? activeEditor.getResource() : null; } private onSelected(): void { @@ -694,7 +695,7 @@ export class MarkersPanel extends Panel implements IMarkerFilterController { return this.tree.getFocus()[0]; } - public getActionItem(action: IAction): IActionItem { + public getActionItem(action: IAction): IActionItem | null { if (action.id === MarkersFilterAction.ID) { this.filterInputActionItem = this.instantiationService.createInstance(MarkersFilterActionItem, this.filterAction, this); return this.filterInputActionItem; diff --git a/src/vs/workbench/contrib/scm/electron-browser/scm.contribution.ts b/src/vs/workbench/contrib/scm/electron-browser/scm.contribution.ts index 7807df023e6c35b48866bc9355d6e5a75a4501d8..70258e96a6a7e39d349c3be4cfc9362198a009a1 100644 --- a/src/vs/workbench/contrib/scm/electron-browser/scm.contribution.ts +++ b/src/vs/workbench/contrib/scm/electron-browser/scm.contribution.ts @@ -128,7 +128,7 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({ const args = repository.provider.acceptInputCommand.arguments; const commandService = accessor.get(ICommandService); - return commandService.executeCommand(id, ...args); + return commandService.executeCommand(id, ...(args || [])); } });