@@ -147,12 +147,12 @@ class DockContainerWidgetPrivate
147
147
* Adds dock widget to container and returns the dock area that contains
148
148
* the inserted dock widget
149
149
*/
150
- CDockAreaWidget* dockWidgetIntoContainer (DockWidgetArea area, CDockWidget* Dockwidget);
150
+ CDockAreaWidget* addDockWidgetToContainer (DockWidgetArea area, CDockWidget* Dockwidget);
151
151
152
152
/* *
153
153
* Adds dock widget to a existing DockWidgetArea
154
154
*/
155
- CDockAreaWidget* dockWidgetIntoDockArea (DockWidgetArea area, CDockWidget* Dockwidget,
155
+ CDockAreaWidget* addDockWidgetToDockArea (DockWidgetArea area, CDockWidget* Dockwidget,
156
156
CDockAreaWidget* TargetDockArea);
157
157
158
158
/* *
@@ -304,30 +304,33 @@ class DockContainerWidgetPrivate
304
304
return s;
305
305
}
306
306
307
-
308
- // private slots: ------------------------------------------------------------
309
- void onDockAreaViewToggled (bool Visible)
310
- {
311
- CDockAreaWidget* DockArea = qobject_cast<CDockAreaWidget*>(_this->sender ());
312
- VisibleDockAreaCount += Visible ? 1 : -1 ;
313
- onVisibleDockAreaCountChanged ();
314
- emit _this->dockAreaViewToggled (DockArea, Visible);
315
- }
316
-
317
- void onAdjustSplitterSizes (QSplitter* Splitter, qreal LastRatio = 1.0 )
307
+ /* *
308
+ * Ensures equal distribution of the sizes of a splitter if an dock widget
309
+ * is inserted from code
310
+ */
311
+ void adjustSplitterSizesOnInsertion (QSplitter* Splitter, qreal LastRatio = 1.0 )
318
312
{
319
313
int AreaSize = (Splitter->orientation () == Qt::Horizontal) ? Splitter->width () : Splitter->height ();
320
314
auto SplitterSizes = Splitter->sizes ();
321
315
322
316
qreal TotRatio = SplitterSizes.size () - 1.0 + LastRatio;
323
- for ( int i= 0 ; i< SplitterSizes.size ()-1 ; i++)
317
+ for (int i = 0 ; i < SplitterSizes.size () -1 ; i++)
324
318
{
325
319
SplitterSizes[i] = AreaSize / TotRatio;
326
320
}
327
321
SplitterSizes.back () = AreaSize * LastRatio / TotRatio;
328
322
Splitter->setSizes (SplitterSizes);
329
323
}
330
324
325
+
326
+ // private slots: ------------------------------------------------------------
327
+ void onDockAreaViewToggled (bool Visible)
328
+ {
329
+ CDockAreaWidget* DockArea = qobject_cast<CDockAreaWidget*>(_this->sender ());
330
+ VisibleDockAreaCount += Visible ? 1 : -1 ;
331
+ onVisibleDockAreaCountChanged ();
332
+ emit _this->dockAreaViewToggled (DockArea, Visible);
333
+ }
331
334
}; // struct DockContainerWidgetPrivate
332
335
333
336
@@ -1028,7 +1031,7 @@ bool DockContainerWidgetPrivate::restoreChildNodes(CDockingStateReader& s,
1028
1031
1029
1032
1030
1033
// ============================================================================
1031
- CDockAreaWidget* DockContainerWidgetPrivate::dockWidgetIntoContainer (DockWidgetArea area,
1034
+ CDockAreaWidget* DockContainerWidgetPrivate::addDockWidgetToContainer (DockWidgetArea area,
1032
1035
CDockWidget* Dockwidget)
1033
1036
{
1034
1037
CDockAreaWidget* NewDockArea = new CDockAreaWidget (DockManager, _this);
@@ -1141,7 +1144,7 @@ void DockContainerWidgetPrivate::dumpRecursive(int level, QWidget* widget)
1141
1144
1142
1145
1143
1146
// ============================================================================
1144
- CDockAreaWidget* DockContainerWidgetPrivate::dockWidgetIntoDockArea (DockWidgetArea area,
1147
+ CDockAreaWidget* DockContainerWidgetPrivate::addDockWidgetToDockArea (DockWidgetArea area,
1145
1148
CDockWidget* Dockwidget, CDockAreaWidget* TargetDockArea)
1146
1149
{
1147
1150
if (CenterDockWidgetArea == area)
@@ -1161,7 +1164,12 @@ CDockAreaWidget* DockContainerWidgetPrivate::dockWidgetIntoDockArea(DockWidgetAr
1161
1164
{
1162
1165
ADS_PRINT (" TargetAreaSplitter->orientation() == InsertParam.orientation()" );
1163
1166
TargetAreaSplitter->insertWidget (index + InsertParam.insertOffset (), NewDockArea);
1164
- onAdjustSplitterSizes (TargetAreaSplitter);
1167
+ // do nothing, if flag is not enabled
1168
+ if (CDockManager::testConfigFlag (CDockManager::EqualSplitOnInsertion))
1169
+ {
1170
+ adjustSplitterSizesOnInsertion (TargetAreaSplitter);
1171
+ }
1172
+
1165
1173
}
1166
1174
else
1167
1175
{
@@ -1172,8 +1180,11 @@ CDockAreaWidget* DockContainerWidgetPrivate::dockWidgetIntoDockArea(DockWidgetAr
1172
1180
1173
1181
insertWidgetIntoSplitter (NewSplitter, NewDockArea, InsertParam.append ());
1174
1182
TargetAreaSplitter->insertWidget (index, NewSplitter);
1175
- TargetAreaSplitter->setSizes (TargetAreaSizes);
1176
- onAdjustSplitterSizes (NewSplitter);
1183
+ if (CDockManager::testConfigFlag (CDockManager::EqualSplitOnInsertion))
1184
+ {
1185
+ TargetAreaSplitter->setSizes (TargetAreaSizes);
1186
+ adjustSplitterSizesOnInsertion (NewSplitter);
1187
+ }
1177
1188
}
1178
1189
1179
1190
appendDockAreas ({NewDockArea});
@@ -1231,11 +1242,11 @@ CDockAreaWidget* CDockContainerWidget::addDockWidget(DockWidgetArea area, CDockW
1231
1242
Dockwidget->setDockManager (d->DockManager );
1232
1243
if (DockAreaWidget)
1233
1244
{
1234
- return d->dockWidgetIntoDockArea (area, Dockwidget, DockAreaWidget);
1245
+ return d->addDockWidgetToDockArea (area, Dockwidget, DockAreaWidget);
1235
1246
}
1236
1247
else
1237
1248
{
1238
- return d->dockWidgetIntoContainer (area, Dockwidget);
1249
+ return d->addDockWidgetToContainer (area, Dockwidget);
1239
1250
}
1240
1251
}
1241
1252
0 commit comments