@@ -147,12 +147,12 @@ class DockContainerWidgetPrivate
147147 * Adds dock widget to container and returns the dock area that contains
148148 * the inserted dock widget
149149 */
150- CDockAreaWidget* dockWidgetIntoContainer (DockWidgetArea area, CDockWidget* Dockwidget);
150+ CDockAreaWidget* addDockWidgetToContainer (DockWidgetArea area, CDockWidget* Dockwidget);
151151
152152 /* *
153153 * Adds dock widget to a existing DockWidgetArea
154154 */
155- CDockAreaWidget* dockWidgetIntoDockArea (DockWidgetArea area, CDockWidget* Dockwidget,
155+ CDockAreaWidget* addDockWidgetToDockArea (DockWidgetArea area, CDockWidget* Dockwidget,
156156 CDockAreaWidget* TargetDockArea);
157157
158158 /* *
@@ -304,30 +304,33 @@ class DockContainerWidgetPrivate
304304 return s;
305305 }
306306
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 )
318312 {
319313 int AreaSize = (Splitter->orientation () == Qt::Horizontal) ? Splitter->width () : Splitter->height ();
320314 auto SplitterSizes = Splitter->sizes ();
321315
322316 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++)
324318 {
325319 SplitterSizes[i] = AreaSize / TotRatio;
326320 }
327321 SplitterSizes.back () = AreaSize * LastRatio / TotRatio;
328322 Splitter->setSizes (SplitterSizes);
329323 }
330324
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+ }
331334}; // struct DockContainerWidgetPrivate
332335
333336
@@ -1028,7 +1031,7 @@ bool DockContainerWidgetPrivate::restoreChildNodes(CDockingStateReader& s,
10281031
10291032
10301033// ============================================================================
1031- CDockAreaWidget* DockContainerWidgetPrivate::dockWidgetIntoContainer (DockWidgetArea area,
1034+ CDockAreaWidget* DockContainerWidgetPrivate::addDockWidgetToContainer (DockWidgetArea area,
10321035 CDockWidget* Dockwidget)
10331036{
10341037 CDockAreaWidget* NewDockArea = new CDockAreaWidget (DockManager, _this);
@@ -1141,7 +1144,7 @@ void DockContainerWidgetPrivate::dumpRecursive(int level, QWidget* widget)
11411144
11421145
11431146// ============================================================================
1144- CDockAreaWidget* DockContainerWidgetPrivate::dockWidgetIntoDockArea (DockWidgetArea area,
1147+ CDockAreaWidget* DockContainerWidgetPrivate::addDockWidgetToDockArea (DockWidgetArea area,
11451148 CDockWidget* Dockwidget, CDockAreaWidget* TargetDockArea)
11461149{
11471150 if (CenterDockWidgetArea == area)
@@ -1161,7 +1164,12 @@ CDockAreaWidget* DockContainerWidgetPrivate::dockWidgetIntoDockArea(DockWidgetAr
11611164 {
11621165 ADS_PRINT (" TargetAreaSplitter->orientation() == InsertParam.orientation()" );
11631166 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+
11651173 }
11661174 else
11671175 {
@@ -1172,8 +1180,11 @@ CDockAreaWidget* DockContainerWidgetPrivate::dockWidgetIntoDockArea(DockWidgetAr
11721180
11731181 insertWidgetIntoSplitter (NewSplitter, NewDockArea, InsertParam.append ());
11741182 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+ }
11771188 }
11781189
11791190 appendDockAreas ({NewDockArea});
@@ -1231,11 +1242,11 @@ CDockAreaWidget* CDockContainerWidget::addDockWidget(DockWidgetArea area, CDockW
12311242 Dockwidget->setDockManager (d->DockManager );
12321243 if (DockAreaWidget)
12331244 {
1234- return d->dockWidgetIntoDockArea (area, Dockwidget, DockAreaWidget);
1245+ return d->addDockWidgetToDockArea (area, Dockwidget, DockAreaWidget);
12351246 }
12361247 else
12371248 {
1238- return d->dockWidgetIntoContainer (area, Dockwidget);
1249+ return d->addDockWidgetToContainer (area, Dockwidget);
12391250 }
12401251}
12411252
0 commit comments