Implemented Pin To functionality for Auto Hide Tabs

This commit is contained in:
Uwe Kindler
2023-07-07 13:35:55 +02:00
parent 1c6d86e70f
commit 4bdc04e9d8
9 changed files with 125 additions and 33 deletions

View File

@@ -555,6 +555,13 @@ bool CDockWidget::isAutoHide() const
}
//============================================================================
SideBarLocation CDockWidget::autoHideLocation() const
{
return isAutoHide() ? autoHideDockContainer()->sideBarLocation() : SideBarNone;
}
//============================================================================
bool CDockWidget::isFloating() const
{
@@ -1206,7 +1213,7 @@ void CDockWidget::setAutoHide(bool Enable, SideBarLocation Location)
}
// Do nothing if nothing changes
if (Enable == isAutoHide())
if (Enable == isAutoHide() && Location == autoHideLocation())
{
return;
}
@@ -1216,6 +1223,25 @@ void CDockWidget::setAutoHide(bool Enable, SideBarLocation Location)
{
DockArea->setAutoHide(false);
}
else if (isAutoHide())
{
auto AutoHideContainer = autoHideDockContainer();
auto OldOrientation = AutoHideContainer->orientation();
auto SideBar = dockContainer()->autoHideSideBar(Location);
SideBar->addAutoHideWidget(AutoHideContainer);
if (SideBar->orientation() != OldOrientation)
{
auto OriginalSize = AutoHideContainer->originalDockWidgetSize();
if (SideBar->orientation() == Qt::Horizontal)
{
AutoHideContainer->setSize(OriginalSize.height());
}
else
{
AutoHideContainer->setSize(OriginalSize.width());
}
}
}
else
{
auto area = (SideBarNone == Location) ? DockArea->calculateSideTabBarArea() : Location;