diff --git a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts index 0396247c95fdc0f4325ebfe625a73d425977eb87..d3b5abab171ed9e3a79e0ef66ac82e76a54b6a6f 100644 --- a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts +++ b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts @@ -129,6 +129,8 @@ export class ActivitybarPart extends Part implements IActivityService { const index = Object.keys(this.compositeIdToActions).indexOf(viewletId); const action = this.compositeIdToActions[viewletId]; const actionItem = this.activityActionItems[action.id]; + delete this.compositeIdToActions[viewletId]; + delete this.activityActionItems[action.id]; action.dispose(); actionItem.dispose(); this.viewletSwitcherBar.pull(index); diff --git a/src/vs/workbench/parts/explorers/common/treeExplorerActions.contribution.ts b/src/vs/workbench/parts/explorers/common/treeExplorerActions.contribution.ts index 1506c5fcb76a991938e18ae1c81670894cb6f2a6..c511b9d0bc3b5b62d1b69b6475daf5a212b08fc1 100644 --- a/src/vs/workbench/parts/explorers/common/treeExplorerActions.contribution.ts +++ b/src/vs/workbench/parts/explorers/common/treeExplorerActions.contribution.ts @@ -8,6 +8,7 @@ import { localize } from 'vs/nls'; import { TPromise } from 'vs/base/common/winjs.base'; import { Registry } from 'vs/platform/platform'; import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/workbench/common/actionRegistry'; +import { ViewletRegistry, Extensions as ViewletExtensions } from 'vs/workbench/browser/viewlet'; import { SyncActionDescriptor } from 'vs/platform/actions/common/actions'; import { Action } from 'vs/base/common/actions'; import { IQuickOpenService, IPickOpenEntry } from 'vs/workbench/services/quickopen/common/quickOpenService'; @@ -39,16 +40,24 @@ export class ToggleExtViewletAction extends Action { const actionLabel = isEnabled ? localize('disable', 'Disable') : localize('enable', 'Enable'); picks.push({ id: viewlet.id, - label: `${actionLabel} ${viewlet.name}` + label: `${actionLabel} ${viewlet.name}`, + run: () => { + this.viewletService.toggleViewlet(viewlet.id).then(() => { + if (isEnabled) { + // To disable, so open default viewlet + const defaultViewletId = (Registry.as(ViewletExtensions.Viewlets)).getDefaultViewletId(); + this.viewletService.openViewlet(defaultViewletId); + } else { + // To enable, so open the viewlet to be enabled + this.viewletService.openViewlet(viewlet.id); + } + }); + } }); }); return TPromise.timeout(50 /* quick open is sensitive to being opened so soon after another */).then(() => { - this.quickOpenService.pick(picks, { placeHolder: 'Select Custom Explorer to toggle' }).then(pick => { - if (pick) { - this.viewletService.toggleViewlet(pick.id); - } - }); + this.quickOpenService.pick(picks, { placeHolder: 'Select Custom Explorer to toggle' }).done(); }); } }