@@ -145,7 +145,7 @@ class DockContainerWidgetPrivate
145145 QList<CAutoHideDockContainer*> AutoHideWidgets;
146146 QMap<SideBarLocation, CAutoHideSideBar*> SideTabBarWidgets;
147147 QGridLayout* Layout = nullptr ;
148- QSplitter * RootSplitter = nullptr ;
148+ CDockSplitter * RootSplitter = nullptr ;
149149 bool isFloating = false ;
150150 CDockAreaWidget* LastAddedAreaCache[5 ];
151151 int VisibleDockAreaCount = -1 ;
@@ -465,15 +465,15 @@ void DockContainerWidgetPrivate::dropIntoContainer(CFloatingDockContainer* Float
465465 CDockContainerWidget* FloatingDockContainer = FloatingWidget->dockContainer ();
466466 auto NewDockAreas = FloatingDockContainer->findChildren <CDockAreaWidget*>(
467467 QString (), Qt::FindChildrenRecursively);
468- QSplitter* Splitter = RootSplitter;
468+ auto Splitter = RootSplitter;
469469
470470 if (DockAreas.count () <= 1 )
471471 {
472472 Splitter->setOrientation (InsertParam.orientation ());
473473 }
474474 else if (Splitter->orientation () != InsertParam.orientation ())
475475 {
476- QSplitter* NewSplitter = newSplitter (InsertParam.orientation ());
476+ auto NewSplitter = newSplitter (InsertParam.orientation ());
477477 QLayoutItem* li = Layout->replaceWidget (Splitter, NewSplitter);
478478 NewSplitter->addWidget (Splitter);
479479 updateSplitterHandles (NewSplitter);
@@ -1248,7 +1248,7 @@ void DockContainerWidgetPrivate::addDockArea(CDockAreaWidget* NewDockArea, DockW
12481248 }
12491249 else
12501250 {
1251- QSplitter* NewSplitter = newSplitter (InsertParam.orientation ());
1251+ auto NewSplitter = newSplitter (InsertParam.orientation ());
12521252 if (InsertParam.append ())
12531253 {
12541254 QLayoutItem* li = Layout->replaceWidget (Splitter, NewSplitter);
@@ -1583,7 +1583,7 @@ void CDockContainerWidget::removeDockArea(CDockAreaWidget* area)
15831583 }
15841584
15851585 QWidget* widget = Splitter->widget (0 );
1586- QSplitter* ChildSplitter = qobject_cast<QSplitter *>(widget);
1586+ auto ChildSplitter = qobject_cast<CDockSplitter *>(widget);
15871587 // If the one and only content widget of the splitter is not a splitter
15881588 // then we are finished
15891589 if (!ChildSplitter)
@@ -1913,8 +1913,8 @@ bool CDockContainerWidget::restoreState(CDockingStateReader& s, bool Testing)
19131913 }
19141914
19151915 d->Layout ->replaceWidget (d->RootSplitter , NewRootSplitter);
1916- QSplitter* OldRoot = d->RootSplitter ;
1917- d->RootSplitter = qobject_cast<QSplitter *>(NewRootSplitter);
1916+ auto OldRoot = d->RootSplitter ;
1917+ d->RootSplitter = qobject_cast<CDockSplitter *>(NewRootSplitter);
19181918 OldRoot->deleteLater ();
19191919
19201920 return true ;
@@ -2132,7 +2132,21 @@ QRect CDockContainerWidget::contentRect() const
21322132 return QRect ();
21332133 }
21342134
2135- return d->RootSplitter ->geometry ();
2135+ if (d->RootSplitter ->hasVisibleContent ())
2136+ {
2137+ return d->RootSplitter ->geometry ();
2138+ }
2139+ else
2140+ {
2141+ auto ContentRect = this ->rect ();
2142+ ContentRect.adjust (
2143+ sideTabBar (SideBarLeft)->sizeHint ().width (),
2144+ sideTabBar (SideBarTop)->sizeHint ().height (),
2145+ -sideTabBar (SideBarRight)->sizeHint ().width (),
2146+ -sideTabBar (SideBarBottom)->sizeHint ().height ());
2147+
2148+ return ContentRect;
2149+ }
21362150}
21372151
21382152
0 commit comments