diff --git a/src/vs/base/browser/ui/actionbar/actionbar.ts b/src/vs/base/browser/ui/actionbar/actionbar.ts index d562716a1ad..a49c5ee254f 100644 --- a/src/vs/base/browser/ui/actionbar/actionbar.ts +++ b/src/vs/base/browser/ui/actionbar/actionbar.ts @@ -554,7 +554,8 @@ export class ActionBar extends EventEmitter implements IActionRunner { } public clear(): void { - this.items = lifecycle.dispose(this.items); + // Do not dispose action items if they were provided from outside + this.items = this.options.actionItemProvider ? [] : lifecycle.dispose(this.items); $(this.actionsList).empty(); } @@ -669,7 +670,7 @@ export class ActionBar extends EventEmitter implements IActionRunner { public dispose(): void { if (this.items !== null) { - this.clear(); + lifecycle.dispose(this.items); } this.items = null; diff --git a/src/vs/workbench/parts/debug/browser/debugActionsWidget.ts b/src/vs/workbench/parts/debug/browser/debugActionsWidget.ts index 354085853bd..d3d055fbff3 100644 --- a/src/vs/workbench/parts/debug/browser/debugActionsWidget.ts +++ b/src/vs/workbench/parts/debug/browser/debugActionsWidget.ts @@ -52,6 +52,7 @@ export class DebugActionsWidget extends Themable implements IWorkbenchContributi private isVisible: boolean; private isBuilt: boolean; + private focusProcessActionItem: FocusProcessActionItem; constructor( @IMessageService private messageService: IMessageService, @@ -78,7 +79,12 @@ export class DebugActionsWidget extends Themable implements IWorkbenchContributi orientation: ActionsOrientation.HORIZONTAL, actionItemProvider: (action: IAction) => { if (action.id === FocusProcessAction.ID) { - return this.instantiationService.createInstance(FocusProcessActionItem, action); + if (!this.focusProcessActionItem) { + this.focusProcessActionItem = this.instantiationService.createInstance(FocusProcessActionItem, action); + this.toDispose.push(this.focusProcessActionItem); + } + + return this.focusProcessActionItem; } return null;