Improved hide / show functionality of dock widgets

This commit is contained in:
Uwe Kindler
2017-03-22 16:08:44 +01:00
parent 0d6f469a36
commit b6ee26adc2
8 changed files with 165 additions and 101 deletions

View File

@@ -172,7 +172,7 @@ CFloatingDockContainer::CFloatingDockContainer(CDockManager* DockManager) :
QWidget(DockManager, Qt::Window),
d(new FloatingDockContainerPrivate(this))
{
setAttribute(Qt::WA_DeleteOnClose);
//setAttribute(Qt::WA_DeleteOnClose);
d->DockManager = DockManager;
QBoxLayout* l = new QBoxLayout(QBoxLayout::TopToBottom);
l->setContentsMargins(0, 0, 0, 0);
@@ -210,6 +210,7 @@ CFloatingDockContainer::CFloatingDockContainer(CDockWidget* DockWidget) :
//============================================================================
CFloatingDockContainer::~CFloatingDockContainer()
{
std::cout << "~CFloatingDockContainer" << std::endl;
if (d->DockManager)
{
d->DockManager->removeFloatingWidget(this);
@@ -269,17 +270,21 @@ void CFloatingDockContainer::closeEvent(QCloseEvent *event)
auto DockWidgets = dockContainer()->dockArea(i)->dockWidgets();
for (auto DockWidget : DockWidgets)
{
DockWidget->hideDockWidget(false);
DockWidget->hideDockWidget();
}
}
QWidget::closeEvent(event);
}
else
{
std::cout << "Closing single tab" << std::endl;
event->ignore();
auto DockArea = dockContainer()->dockArea(0);
DockArea->currentDockWidget()->hideDockWidget(true);
DockArea->currentDockWidget()->hideDockWidget();
// As long as there are open dock widgets, we do not close the floating
// window
if (DockArea->openDockWidgets().count())
{
event->ignore();
}
}
}