Skip to content

Commit 87f5b61

Browse files
Fixed restoreSideBar() function to prevent multiple side tabs for the same dock widget
1 parent d010fe7 commit 87f5b61

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

src/AutoHideTab.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class CDockWidget;
4040
class CAutoHideSideBar;
4141
class CDockWidgetTab;
4242
struct SideTabIconLabelPrivate;
43+
struct DockContainerWidgetPrivate;
4344

4445
/**
4546
* A dock widget Side tab that shows a title or an icon.
@@ -60,12 +61,13 @@ class ADS_EXPORT CAutoHideTab : public CPushButton
6061
friend struct AutoHideTabPrivate;
6162
friend class CDockWidget;
6263
friend class CAutoHideDockContainer;
63-
64-
protected:
6564
friend class CAutoHideSideBar;
6665
friend class CDockAreaWidget;
6766
friend class CDockContainerWidget;
67+
friend DockContainerWidgetPrivate;
6868

69+
70+
protected:
6971
void setSideBar(CAutoHideSideBar *SideTabBar);
7072
void removeFromSideBar();
7173
virtual bool event(QEvent* event) override;

src/DockContainerWidget.cpp

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1104,7 +1104,20 @@ bool DockContainerWidgetPrivate::restoreSideBar(CDockingStateReader& s,
11041104
}
11051105

11061106
auto SideBar = _this->sideTabBar(Area);
1107-
auto AutoHideContainer = SideBar->insertDockWidget(-1, DockWidget);
1107+
CAutoHideDockContainer* AutoHideContainer;
1108+
if (DockWidget->isAutoHide())
1109+
{
1110+
AutoHideContainer = DockWidget->autoHideDockContainer();
1111+
if (AutoHideContainer->sideBar() != SideBar)
1112+
{
1113+
AutoHideContainer->autoHideTab()->removeFromSideBar();
1114+
SideBar->insertTab(-1, AutoHideContainer->autoHideTab());
1115+
}
1116+
}
1117+
else
1118+
{
1119+
AutoHideContainer = SideBar->insertDockWidget(-1, DockWidget);
1120+
}
11081121
AutoHideContainer->setSize(Size);
11091122
DockWidget->setProperty(internal::ClosedProperty, Closed);
11101123
DockWidget->setProperty(internal::DirtyProperty, false);

0 commit comments

Comments
 (0)