@@ -313,6 +313,21 @@ class DockContainerWidgetPrivate
313
313
onVisibleDockAreaCountChanged ();
314
314
emit _this->dockAreaViewToggled (DockArea, Visible);
315
315
}
316
+
317
+ void onAdjustSplitterSizes (QSplitter* Splitter, qreal LastRatio = 1.0 )
318
+ {
319
+ int AreaSize = (Splitter->orientation () == Qt::Horizontal) ? Splitter->width () : Splitter->height ();
320
+ auto SplitterSizes = Splitter->sizes ();
321
+
322
+ qreal TotRatio = SplitterSizes.size () - 1.0 + LastRatio;
323
+ for ( int i=0 ; i<SplitterSizes.size ()-1 ; i++)
324
+ {
325
+ SplitterSizes[i] = AreaSize / TotRatio;
326
+ }
327
+ SplitterSizes.back () = AreaSize * AreaSize / TotRatio;
328
+ Splitter->setSizes (SplitterSizes);
329
+ }
330
+
316
331
}; // struct DockContainerWidgetPrivate
317
332
318
333
@@ -1144,16 +1159,21 @@ CDockAreaWidget* DockContainerWidgetPrivate::dockWidgetIntoDockArea(DockWidgetAr
1144
1159
int index = TargetAreaSplitter ->indexOf (TargetDockArea);
1145
1160
if (TargetAreaSplitter->orientation () == InsertParam.orientation ())
1146
1161
{
1147
- ADS_PRINT (" TargetAreaSplitter->orientation() == InsertParam.orientation()" );
1162
+ ADS_PRINT (" TargetAreaSplitter->orientation() == InsertParam.orientation()" );
1148
1163
TargetAreaSplitter->insertWidget (index + InsertParam.insertOffset (), NewDockArea);
1164
+ onAdjustSplitterSizes (TargetAreaSplitter);
1149
1165
}
1150
1166
else
1151
1167
{
1152
- ADS_PRINT (" TargetAreaSplitter->orientation() != InsertParam.orientation()" );
1168
+ ADS_PRINT (" TargetAreaSplitter->orientation() != InsertParam.orientation()" );
1169
+ auto TargetAreaSizes = TargetAreaSplitter->sizes ();
1153
1170
QSplitter* NewSplitter = newSplitter (InsertParam.orientation ());
1154
1171
NewSplitter->addWidget (TargetDockArea);
1172
+
1155
1173
insertWidgetIntoSplitter (NewSplitter, NewDockArea, InsertParam.append ());
1156
1174
TargetAreaSplitter->insertWidget (index, NewSplitter);
1175
+ TargetAreaSplitter->setSizes (TargetAreaSizes);
1176
+ onAdjustSplitterSizes (TargetAreaSplitter);
1157
1177
}
1158
1178
1159
1179
appendDockAreas ({NewDockArea});
0 commit comments