Set splitter sizes based on proportion settable in the dock widget
This commit is contained in:
@@ -188,6 +188,7 @@ COverlayDockContainer::COverlayDockContainer(CDockWidget* DockWidget, CDockWidge
|
||||
COverlayDockContainer(DockWidget->dockManager(), area, parent)
|
||||
{
|
||||
addDockWidget(DockWidget);
|
||||
setDockSizeProportion(DockWidget->DefaultOverlayDockProportion());
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
@@ -234,30 +235,6 @@ void COverlayDockContainer::addDockWidget(CDockWidget* DockWidget)
|
||||
OldDockArea->removeDockWidget(DockWidget);
|
||||
}
|
||||
d->DockArea->addDockWidget(DockWidget);
|
||||
|
||||
const auto dockContainerParent = parentContainer();
|
||||
const auto rootSplitter = dockContainerParent->rootSplitter();
|
||||
const auto rect = rootSplitter->frameGeometry();
|
||||
const auto dockWidth = DockWidget->sizeHint().width();
|
||||
switch (d->Area)
|
||||
{
|
||||
case CDockWidgetSideTab::Left:
|
||||
{
|
||||
d->Splitter->setSizes({ dockWidth, rect.width() - dockWidth });
|
||||
break;
|
||||
}
|
||||
case CDockWidgetSideTab::Right:
|
||||
{
|
||||
d->Splitter->setSizes({ rect.width() - dockWidth, dockWidth });
|
||||
break;
|
||||
}
|
||||
case CDockWidgetSideTab::Bottom:
|
||||
{
|
||||
d->Splitter->setSizes({ rect.width() - dockWidth, dockWidth });
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
d->DockWidget->sideTabWidget()->updateOrientationAndSpacing(d->Area);
|
||||
|
||||
updateSize();
|
||||
@@ -265,6 +242,28 @@ void COverlayDockContainer::addDockWidget(CDockWidget* DockWidget)
|
||||
}
|
||||
|
||||
|
||||
//============================================================================
|
||||
void COverlayDockContainer::setDockSizeProportion(int SplitterProportion)
|
||||
{
|
||||
switch (d->Area)
|
||||
{
|
||||
case CDockWidgetSideTab::Left:
|
||||
{
|
||||
d->Splitter->setSizes({ INT_MAX / SplitterProportion, INT_MAX - INT_MAX / SplitterProportion });
|
||||
break;
|
||||
}
|
||||
case CDockWidgetSideTab::Right:
|
||||
[[fallthrough]];
|
||||
case CDockWidgetSideTab::Bottom:
|
||||
{
|
||||
d->Splitter->setSizes({ INT_MAX - INT_MAX / SplitterProportion, INT_MAX / SplitterProportion });
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
//============================================================================
|
||||
CDockWidgetSideTab::SideTabBarArea COverlayDockContainer::sideTabBarArea() const
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user