Skip to content

Commit a4d281d

Browse files
authored
Floating window fixes. (#239)
* Don't show a CFloatingDockContainer if all its CDockWidget were hidden before its first shown. * Destroy empty CFloatingDockContainer when removing CDockWidget via removeDockWidget function.
1 parent 8361f90 commit a4d281d

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

src/DockAreaWidget.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -478,6 +478,14 @@ void CDockAreaWidget::removeDockWidget(CDockWidget* DockWidget)
478478
ADS_PRINT("Dock Area empty");
479479
DockContainer->removeDockArea(this);
480480
this->deleteLater();
481+
if(DockContainer->dockAreaCount() == 0)
482+
{
483+
if(CFloatingDockContainer* FloatingDockContainer = DockContainer->floatingWidget())
484+
{
485+
FloatingDockContainer->hide();
486+
FloatingDockContainer->deleteLater();
487+
}
488+
}
481489
}
482490
else if (DockWidget == CurrentDockWidget)
483491
{

src/DockManager.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -653,7 +653,14 @@ void CDockManager::showEvent(QShowEvent *event)
653653

654654
for (auto FloatingWidget : d->UninitializedFloatingWidgets)
655655
{
656-
FloatingWidget->show();
656+
for(CDockWidget* DockWidget : FloatingWidget->dockWidgets())
657+
{
658+
if(!DockWidget->isClosed())
659+
{
660+
FloatingWidget->show();
661+
break;
662+
}
663+
}
657664
}
658665
d->UninitializedFloatingWidgets.clear();
659666
}

0 commit comments

Comments
 (0)