diff --git a/src/vs/platform/actions/common/actions.ts b/src/vs/platform/actions/common/actions.ts index d43a2a4cb5f..5b48ab3dfd6 100644 --- a/src/vs/platform/actions/common/actions.ts +++ b/src/vs/platform/actions/common/actions.ts @@ -577,6 +577,11 @@ export function registerAction2(ctor: { new(): Action2 }): IDisposable { const { f1, menu, keybinding, ...command } = action.desc; + if (CommandsRegistry.getCommand(command.id)) { + // throw new Error(`Cannot register two commands with the same id: ${command.id}`); + console.warn(`Cannot register two commands with the same id: ${command.id}`); + } + // command disposables.add(CommandsRegistry.registerCommand({ id: command.id, diff --git a/src/vs/workbench/services/views/browser/viewDescriptorService.ts b/src/vs/workbench/services/views/browser/viewDescriptorService.ts index edadb1ab37d..d841d165c09 100644 --- a/src/vs/workbench/services/views/browser/viewDescriptorService.ts +++ b/src/vs/workbench/services/views/browser/viewDescriptorService.ts @@ -756,13 +756,17 @@ export class ViewDescriptorService extends Disposable implements IViewDescriptor } private registerViewsVisibilityActions(viewContainer: ViewContainer, { viewContainerModel, disposables }: { viewContainerModel: ViewContainerModel; disposables: DisposableStore }): void { + this.viewsVisibilityActionDisposables.deleteAndDispose(viewContainer); this.viewsVisibilityActionDisposables.set(viewContainer, this.registerViewsVisibilityActionsForContainer(viewContainerModel)); disposables.add(Event.any( viewContainerModel.onDidChangeActiveViewDescriptors, viewContainerModel.onDidAddVisibleViewDescriptors, viewContainerModel.onDidRemoveVisibleViewDescriptors, viewContainerModel.onDidMoveVisibleViewDescriptors - )(e => this.viewsVisibilityActionDisposables.set(viewContainer, this.registerViewsVisibilityActionsForContainer(viewContainerModel)))); + )(e => { + this.viewsVisibilityActionDisposables.deleteAndDispose(viewContainer); + this.viewsVisibilityActionDisposables.set(viewContainer, this.registerViewsVisibilityActionsForContainer(viewContainerModel)); + })); } private registerViewsVisibilityActionsForContainer(viewContainerModel: ViewContainerModel): IDisposable { diff --git a/test/unit/electron/renderer.js b/test/unit/electron/renderer.js index 243d5a5b142..fd22a6e9512 100644 --- a/test/unit/electron/renderer.js +++ b/test/unit/electron/renderer.js @@ -195,6 +195,7 @@ function loadTests(opts) { 'issue #149130: vscode freezes because of Bracket Pair Colorization', // https://github.com/microsoft/vscode/issues/192440 'property limits', // https://github.com/microsoft/vscode/issues/192443 'Error events', // https://github.com/microsoft/vscode/issues/192443 + 'fetch returns keybinding with user first if title and id matches' // ]); let _testsWithUnexpectedOutput = false;