Compare commits

...

2 Commits

Author SHA1 Message Date
Uwe Kindler
2cd451c53c Added dockContainer() function to AutoHideSideBar.cpp 2022-12-09 08:50:41 +01:00
Uwe Kindler
302ee59d67 Fixed dockContainer() function of AutoHideDockContainer.cpp
Returning the dock container of the internal dock area is wrong, if the dock widget is removed from
the AutoHideDockContainer, then the DockArea container function already returns the new dock container
of the DockArea and not the dock container of the AutoHideDockContainer.cpp
2022-12-09 08:50:12 +01:00
4 changed files with 46 additions and 19 deletions

View File

@@ -187,14 +187,7 @@ AutoHideDockContainerPrivate::AutoHideDockContainerPrivate(
//============================================================================
CDockContainerWidget* CAutoHideDockContainer::dockContainer() const
{
if (d->DockArea)
{
return d->DockArea->dockContainer();
}
else
{
return internal::findParent<CDockContainerWidget*>(this);
}
return internal::findParent<CDockContainerWidget*>(this);
}
@@ -303,8 +296,15 @@ CAutoHideDockContainer::~CAutoHideDockContainer()
//============================================================================
CAutoHideSideBar* CAutoHideDockContainer::sideBar() const
{
auto DockContainer = dockContainer();
return DockContainer ? DockContainer->sideTabBar(d->SideTabBarArea) : nullptr;
if (d->SideTab)
{
return d->SideTab->sideBar();
}
else
{
auto DockContainer = dockContainer();
return DockContainer ? DockContainer->sideTabBar(d->SideTabBarArea) : nullptr;
}
}

View File

@@ -378,11 +378,19 @@ int CAutoHideSideBar::spacing() const
return d->TabsLayout->spacing();
}
//===========================================================================
void CAutoHideSideBar::setSpacing(int Spacing)
{
d->TabsLayout->setSpacing(Spacing);
}
//===========================================================================
CDockContainerWidget* CAutoHideSideBar::dockContainer() const
{
return d->ContainerWidget;
}
} // namespace ads

View File

@@ -163,6 +163,11 @@ public:
* Setter for spacing property - sets the spacing
*/
void setSpacing(int Spacing);
/**
* Returns the dock container that hosts this sideBar()
*/
CDockContainerWidget* dockContainer() const;
};
} // namespace ads
//-----------------------------------------------------------------------------

View File

@@ -248,17 +248,31 @@ void DockWidgetPrivate::updateParentDockArea()
//============================================================================
void DockWidgetPrivate::closeAutoHideDockWidgetsIfNeeded()
{
if (_this->dockContainer() && _this->dockContainer()->openedDockWidgets().isEmpty() && !_this->dockManager()->isRestoringState())
auto DockContainer = _this->dockContainer();
if (!DockContainer)
{
for (auto autoHideWidget : _this->dockContainer()->autoHideWidgets())
{
if (autoHideWidget->dockWidget() == _this)
{
continue;
}
return;
}
autoHideWidget->dockWidget()->toggleView(false);
}
if (_this->dockManager()->isRestoringState())
{
return;
}
if (!DockContainer->openedDockWidgets().isEmpty())
{
return;
}
for (auto autoHideWidget : DockContainer->autoHideWidgets())
{
auto DockWidget = autoHideWidget->dockWidget();
if (DockWidget == _this)
{
continue;
}
DockWidget->toggleView(false);
}
}