From 36fff1a2aa44442f8e707e46fd55f5e4cfb482dc Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Mon, 18 Sep 2017 16:13:43 +0200 Subject: [PATCH] PanelViewlet.movePanel --- src/vs/base/browser/ui/splitview/panelview.ts | 3 +++ src/vs/workbench/browser/parts/views/views2.ts | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/vs/base/browser/ui/splitview/panelview.ts b/src/vs/base/browser/ui/splitview/panelview.ts index e676d0de5f6..83e56ce5793 100644 --- a/src/vs/base/browser/ui/splitview/panelview.ts +++ b/src/vs/base/browser/ui/splitview/panelview.ts @@ -353,6 +353,9 @@ export class PanelView implements IDisposable { return; } + const [panelItem] = this.panelItems.splice(fromIndex, 1); + this.panelItems.splice(toIndex < fromIndex ? toIndex : toIndex - 1, 0, panelItem); + this.splitview.moveView(fromIndex, toIndex); } diff --git a/src/vs/workbench/browser/parts/views/views2.ts b/src/vs/workbench/browser/parts/views/views2.ts index cd3bc72e93c..115dda093f4 100644 --- a/src/vs/workbench/browser/parts/views/views2.ts +++ b/src/vs/workbench/browser/parts/views/views2.ts @@ -233,6 +233,24 @@ export class PanelViewlet extends Viewlet { this.updateTitleArea(); } + movePanel(from: ViewletPanel, to: ViewletPanel): void { + const fromIndex = firstIndex(this.panelItems, item => item.panel === from); + const toIndex = firstIndex(this.panelItems, item => item.panel === to); + + if (fromIndex < 0 || fromIndex >= this.panelItems.length) { + return; + } + + if (toIndex < 0 || toIndex >= this.panelItems.length) { + return; + } + + + const [panelItem] = this.panelItems.splice(fromIndex, 1); + this.panelItems.splice(toIndex < fromIndex ? toIndex : toIndex - 1, 0, panelItem); + this.panelview.movePanel(from, to); + } + private updateViewHeaders(): void { if (this.isSingleView) { this.panelItems[0].panel.headerVisible = false; -- GitLab