@@ -65,13 +65,16 @@ class DockPanel extends Widget {
65
65
this . addClass ( 'p-DockPanel' ) ;
66
66
this . _mode = options . mode || 'multiple-document' ;
67
67
this . _renderer = options . renderer || DockPanel . defaultRenderer ;
68
+ if ( options . tabsMovable !== undefined ) {
69
+ this . _tabsMovable = options . tabsMovable ;
70
+ }
68
71
69
72
// Toggle the CSS mode attribute.
70
73
this . dataset [ 'mode' ] = this . _mode ;
71
74
72
75
// Create the delegate renderer for the layout.
73
76
let renderer : DockPanel . IRenderer = {
74
- createTabBar : ( ) => this . _createTabBar ( ) ,
77
+ createTabBar : ( ) => this . _createTabBar ( this . _tabsMovable ) ,
75
78
createHandle : ( ) => this . _createHandle ( )
76
79
} ;
77
80
@@ -189,6 +192,21 @@ class DockPanel extends Widget {
189
192
MessageLoop . postMessage ( this , Private . LayoutModified ) ;
190
193
}
191
194
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
+
192
210
/**
193
211
* Whether the dock panel is empty.
194
212
*/
@@ -811,7 +829,7 @@ class DockPanel extends Widget {
811
829
/**
812
830
* Create a new tab bar for use by the panel.
813
831
*/
814
- private _createTabBar ( ) : TabBar < Widget > {
832
+ private _createTabBar ( tabsMovable : boolean ) : TabBar < Widget > {
815
833
// Create the tab bar.
816
834
let tabBar = this . _renderer . createTabBar ( ) ;
817
835
@@ -825,7 +843,7 @@ class DockPanel extends Widget {
825
843
826
844
// Enforce necessary tab bar behavior.
827
845
// TODO do we really want to enforce *all* of these?
828
- tabBar . tabsMovable = true ;
846
+ tabBar . tabsMovable = tabsMovable ;
829
847
tabBar . allowDeselect = false ;
830
848
tabBar . removeBehavior = 'select-previous-tab' ;
831
849
tabBar . insertBehavior = 'select-tab-if-needed' ;
@@ -941,6 +959,7 @@ class DockPanel extends Widget {
941
959
private _mode : DockPanel . Mode ;
942
960
private _drag : Drag | null = null ;
943
961
private _renderer : DockPanel . IRenderer ;
962
+ private _tabsMovable : boolean = true ;
944
963
private _pressData : Private . IPressData | null = null ;
945
964
private _layoutModified = new Signal < this, void > ( this ) ;
946
965
}
@@ -983,6 +1002,13 @@ namespace DockPanel {
983
1002
* The deafult is `'multiple-document'`.
984
1003
*/
985
1004
mode ?: DockPanel . Mode ;
1005
+
1006
+ /**
1007
+ * Allow user tab placement.
1008
+ *
1009
+ * The deafult is `'true'`.
1010
+ */
1011
+ tabsMovable ?: boolean ;
986
1012
}
987
1013
988
1014
/**
0 commit comments