Skip to content
This repository was archived by the owner on Nov 6, 2019. It is now read-only.

Commit f5681a9

Browse files
committed
GH-223 Enable / Disable Tab Dragging in DockPanel
Allow user to enable / disable tab dragging at runtime. Fixes GH-223 Signed-off-by: Gordon Smith <[email protected]>
1 parent 770808e commit f5681a9

File tree

1 file changed

+29
-3
lines changed

1 file changed

+29
-3
lines changed

packages/widgets/src/dockpanel.ts

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,16 @@ class DockPanel extends Widget {
6565
this.addClass('p-DockPanel');
6666
this._mode = options.mode || 'multiple-document';
6767
this._renderer = options.renderer || DockPanel.defaultRenderer;
68+
if (options.tabsMovable !== undefined) {
69+
this._tabsMovable = options.tabsMovable;
70+
}
6871

6972
// Toggle the CSS mode attribute.
7073
this.dataset['mode'] = this._mode;
7174

7275
// Create the delegate renderer for the layout.
7376
let renderer: DockPanel.IRenderer = {
74-
createTabBar: () => this._createTabBar(),
77+
createTabBar: () => this._createTabBar(this._tabsMovable),
7578
createHandle: () => this._createHandle()
7679
};
7780

@@ -189,6 +192,21 @@ class DockPanel extends Widget {
189192
MessageLoop.postMessage(this, Private.LayoutModified);
190193
}
191194

195+
/**
196+
* Whether the tabs are movable.
197+
*/
198+
get tabsMovable(): boolean {
199+
return this._tabsMovable;
200+
}
201+
202+
/**
203+
* Enable / Disable movable tabs.
204+
*/
205+
set tabsMovable(value: boolean) {
206+
this._tabsMovable = value;
207+
each(this.tabBars(), (tabbar) => tabbar.tabsMovable = value);
208+
}
209+
192210
/**
193211
* Whether the dock panel is empty.
194212
*/
@@ -811,7 +829,7 @@ class DockPanel extends Widget {
811829
/**
812830
* Create a new tab bar for use by the panel.
813831
*/
814-
private _createTabBar(): TabBar<Widget> {
832+
private _createTabBar(tabsMovable: boolean): TabBar<Widget> {
815833
// Create the tab bar.
816834
let tabBar = this._renderer.createTabBar();
817835

@@ -825,7 +843,7 @@ class DockPanel extends Widget {
825843

826844
// Enforce necessary tab bar behavior.
827845
// TODO do we really want to enforce *all* of these?
828-
tabBar.tabsMovable = true;
846+
tabBar.tabsMovable = tabsMovable;
829847
tabBar.allowDeselect = false;
830848
tabBar.removeBehavior = 'select-previous-tab';
831849
tabBar.insertBehavior = 'select-tab-if-needed';
@@ -941,6 +959,7 @@ class DockPanel extends Widget {
941959
private _mode: DockPanel.Mode;
942960
private _drag: Drag | null = null;
943961
private _renderer: DockPanel.IRenderer;
962+
private _tabsMovable: boolean = true;
944963
private _pressData: Private.IPressData | null = null;
945964
private _layoutModified = new Signal<this, void>(this);
946965
}
@@ -983,6 +1002,13 @@ namespace DockPanel {
9831002
* The deafult is `'multiple-document'`.
9841003
*/
9851004
mode?: DockPanel.Mode;
1005+
1006+
/**
1007+
* Allow user tab placement.
1008+
*
1009+
* The deafult is `'true'`.
1010+
*/
1011+
tabsMovable?: boolean;
9861012
}
9871013

9881014
/**

0 commit comments

Comments
 (0)