Added support for delete on close to overlayed widgets

This commit is contained in:
Syarif Fakhri 2022-09-09 13:57:43 +08:00
parent 54b9a8dc50
commit 22402e79f5
3 changed files with 15 additions and 2 deletions

View File

@ -46,6 +46,7 @@ CMainWindow::CMainWindow(QWidget *parent)
TableDockWidget->setMinimumSizeHintMode(CDockWidget::MinimumSizeHintFromDockWidget);
TableDockWidget->resize(250, 150);
TableDockWidget->setMinimumSize(200,150);
TableDockWidget->setFeature(CDockWidget::DockWidgetDeleteOnClose, true);
DockManager->addOverlayDockWidget(CDockWidgetSideTab::SideTabBarArea::Left, TableDockWidget);
ui->menuView->addAction(TableDockWidget->toggleViewAction());

View File

@ -1049,11 +1049,19 @@ void CDockAreaWidget::closeArea()
{
for (auto DockWidget : openedDockWidgets())
{
if ((DockWidget->features().testFlag(CDockWidget::DockWidgetDeleteOnClose) && DockWidget->features().testFlag(CDockWidget::DockWidgetForceCloseWithArea)) ||
DockWidget->features().testFlag(CDockWidget::CustomCloseHandling) && !isOverlayed())
if ((DockWidget->features().testFlag(CDockWidget::DockWidgetDeleteOnClose) && DockWidget->features().testFlag(CDockWidget::DockWidgetForceCloseWithArea)) ||
DockWidget->features().testFlag(CDockWidget::CustomCloseHandling))
{
DockWidget->closeDockWidgetInternal();
}
else if (DockWidget->features().testFlag(CDockWidget::DockWidgetDeleteOnClose) && isOverlayed())
{
DockWidget->closeDockWidgetInternal();
}
else
{
DockWidget->toggleView(false);
}
}
}
}

View File

@ -1015,6 +1015,10 @@ bool CDockWidget::closeDockWidgetInternal(bool ForceClose)
FloatingWidget->hide();
}
}
if (d->DockArea && d->DockArea->isOverlayed())
{
d->DockArea->overlayDockContainer()->cleanupAndDelete();
}
deleteDockWidget();
Q_EMIT closed();
}