Skip to content

Commit 260a2dd

Browse files
Fixed restoreSideBar function and dropping floating widget with auto hide widgets
1 parent 7b9f9e1 commit 260a2dd

File tree

3 files changed

+12
-9
lines changed

3 files changed

+12
-9
lines changed

src/AutoHideDockContainer.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,8 @@ CAutoHideDockContainer::~CAutoHideDockContainer()
303303
//============================================================================
304304
CAutoHideSideBar* CAutoHideDockContainer::sideBar() const
305305
{
306-
return dockContainer()->sideTabBar(d->SideTabBarArea);
306+
auto DockContainer = dockContainer();
307+
return DockContainer ? DockContainer->sideTabBar(d->SideTabBarArea) : nullptr;
307308
}
308309

309310

src/DockContainerWidget.cpp

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1110,8 +1110,7 @@ bool DockContainerWidgetPrivate::restoreSideBar(CDockingStateReader& s,
11101110
AutoHideContainer = DockWidget->autoHideDockContainer();
11111111
if (AutoHideContainer->sideBar() != SideBar)
11121112
{
1113-
AutoHideContainer->autoHideTab()->removeFromSideBar();
1114-
SideBar->insertTab(-1, AutoHideContainer->autoHideTab());
1113+
SideBar->addAutoHideWidget(AutoHideContainer);
11151114
}
11161115
}
11171116
else
@@ -1637,12 +1636,6 @@ void CDockContainerWidget::dropFloatingWidget(CFloatingDockContainer* FloatingWi
16371636
auto ContainerDropArea = d->DockManager->containerOverlay()->dropAreaUnderCursor();
16381637
bool Dropped = false;
16391638

1640-
auto autoHideWidgets = FloatingWidget->dockContainer()->autoHideWidgets();
1641-
for (const auto autohideWidget : autoHideWidgets)
1642-
{
1643-
createAndSetupAutoHideContainer(autohideWidget->sideBarLocation(), autohideWidget->dockWidget());
1644-
}
1645-
16461639
if (DockArea)
16471640
{
16481641
auto dropOverlay = d->DockManager->dockAreaOverlay();
@@ -1674,6 +1667,14 @@ void CDockContainerWidget::dropFloatingWidget(CFloatingDockContainer* FloatingWi
16741667
}
16751668
}
16761669

1670+
// Remove the auto hide widgets from the FloatingWidget and insert
1671+
// them into this widget
1672+
for (auto AutohideWidget : FloatingWidget->dockContainer()->autoHideWidgets())
1673+
{
1674+
auto SideBar = sideTabBar(AutohideWidget->sideBarLocation());
1675+
SideBar->addAutoHideWidget(AutohideWidget);
1676+
}
1677+
16771678
if (Dropped)
16781679
{
16791680
// Fix https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System/issues/351

src/DockContainerWidget.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ class ADS_EXPORT CDockContainerWidget : public QFrame
8383
friend CAutoHideTab;
8484
friend AutoHideTabPrivate;
8585
friend AutoHideDockContainerPrivate;
86+
friend CAutoHideSideBar;
8687

8788
protected:
8889
/**

0 commit comments

Comments
 (0)