@@ -66,13 +66,16 @@ class DockPanel extends Widget {
66
66
this . _mode = options . mode || 'multiple-document' ;
67
67
this . _renderer = options . renderer || DockPanel . defaultRenderer ;
68
68
this . _edges = options . edges || Private . DEFAULT_EDGES ;
69
+ if ( options . tabsMovable !== undefined ) {
70
+ this . _tabsMovable = options . tabsMovable ;
71
+ }
69
72
70
73
// Toggle the CSS mode attribute.
71
74
this . dataset [ 'mode' ] = this . _mode ;
72
75
73
76
// Create the delegate renderer for the layout.
74
77
let renderer : DockPanel . IRenderer = {
75
- createTabBar : ( ) => this . _createTabBar ( ) ,
78
+ createTabBar : ( ) => this . _createTabBar ( this . _tabsMovable ) ,
76
79
createHandle : ( ) => this . _createHandle ( )
77
80
} ;
78
81
@@ -190,6 +193,21 @@ class DockPanel extends Widget {
190
193
MessageLoop . postMessage ( this , Private . LayoutModified ) ;
191
194
}
192
195
196
+ /**
197
+ * Whether the tabs are movable.
198
+ */
199
+ get tabsMovable ( ) : boolean {
200
+ return this . _tabsMovable ;
201
+ }
202
+
203
+ /**
204
+ * Enable / Disable movable tabs.
205
+ */
206
+ set tabsMovable ( value : boolean ) {
207
+ this . _tabsMovable = value ;
208
+ each ( this . tabBars ( ) , ( tabbar ) => tabbar . tabsMovable = value ) ;
209
+ }
210
+
193
211
/**
194
212
* Whether the dock panel is empty.
195
213
*/
@@ -829,7 +847,7 @@ class DockPanel extends Widget {
829
847
/**
830
848
* Create a new tab bar for use by the panel.
831
849
*/
832
- private _createTabBar ( ) : TabBar < Widget > {
850
+ private _createTabBar ( tabsMovable : boolean ) : TabBar < Widget > {
833
851
// Create the tab bar.
834
852
let tabBar = this . _renderer . createTabBar ( ) ;
835
853
@@ -843,7 +861,7 @@ class DockPanel extends Widget {
843
861
844
862
// Enforce necessary tab bar behavior.
845
863
// TODO do we really want to enforce *all* of these?
846
- tabBar . tabsMovable = true ;
864
+ tabBar . tabsMovable = tabsMovable ;
847
865
tabBar . allowDeselect = false ;
848
866
tabBar . removeBehavior = 'select-previous-tab' ;
849
867
tabBar . insertBehavior = 'select-tab-if-needed' ;
@@ -960,6 +978,7 @@ class DockPanel extends Widget {
960
978
private _mode : DockPanel . Mode ;
961
979
private _drag : Drag | null = null ;
962
980
private _renderer : DockPanel . IRenderer ;
981
+ private _tabsMovable : boolean = true ;
963
982
private _pressData : Private . IPressData | null = null ;
964
983
private _layoutModified = new Signal < this, void > ( this ) ;
965
984
}
@@ -1003,11 +1022,19 @@ namespace DockPanel {
1003
1022
*/
1004
1023
mode ?: DockPanel . Mode ;
1005
1024
1025
+
1006
1026
/**
1007
1027
* The sizes of the edge drop zones, in pixels.
1008
1028
* If not given, default values will be used.
1009
1029
*/
1010
1030
edges ?: IEdges ;
1031
+
1032
+ /**
1033
+ * Allow user tab placement.
1034
+ *
1035
+ * The deafult is `'true'`.
1036
+ */
1037
+ tabsMovable ?: boolean ;
1011
1038
}
1012
1039
1013
1040
/**
0 commit comments