diff --git a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts index bb728ec49d5670db4a271f91b6276dcef469fae2..48621649d71e06bf1c423d6f82353cf2ff50aeb7 100644 --- a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts +++ b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts @@ -354,7 +354,7 @@ export class ActivitybarPart extends Part implements IActivityBarService { return this.pinnedViewlets.indexOf(viewletId) >= 0; } - public pin(viewletId: string): void { + public pin(viewletId: string, update = true): void { if (this.isPinned(viewletId)) { return; } @@ -366,11 +366,19 @@ export class ActivitybarPart extends Part implements IActivityBarService { this.pinnedViewlets.push(viewletId); this.pinnedViewlets = arrays.distinct(this.pinnedViewlets); - this.updateViewletSwitcher(); + if (update) { + this.updateViewletSwitcher(); + } }); } public move(viewletId: string, toViewletId: string): void { + + // Make sure a moved viewlet gets pinned + if (!this.isPinned(viewletId)) { + this.pin(viewletId, false /* defer update, we take care of it */); + } + const fromIndex = this.pinnedViewlets.indexOf(viewletId); const toIndex = this.pinnedViewlets.indexOf(toViewletId);