Fixed bug with FloatingWidget deletion, fixed handling of unassigned DockWidgets after restoreState() call

This commit is contained in:
Uwe Kindler
2017-03-28 10:57:03 +02:00
parent 9adc524a42
commit aa8a52b845
6 changed files with 134 additions and 21 deletions

View File

@@ -36,6 +36,7 @@
#include <QStack>
#include <QTextStream>
#include <QPointer>
#include <QEvent>
#include <iostream>
@@ -108,21 +109,30 @@ DockWidgetPrivate::DockWidgetPrivate(CDockWidget* _public) :
//============================================================================
void DockWidgetPrivate::showDockWidget()
{
DockArea->show();
DockArea->setCurrentIndex(DockArea->tabIndex(_this));
QSplitter* Splitter = internal::findParent<QSplitter*>(_this);
if (Splitter)
if (!DockArea)
{
Splitter->show();
}
CDockContainerWidget* Container = DockArea->dockContainer();
if (Container->isFloating())
{
CFloatingDockContainer* FloatingWidget = internal::findParent<
CFloatingDockContainer*>(Container);
CFloatingDockContainer* FloatingWidget = new CFloatingDockContainer(_this);
FloatingWidget->resize(_this->size());
FloatingWidget->show();
}
else
{
DockArea->show();
DockArea->setCurrentIndex(DockArea->tabIndex(_this));
QSplitter* Splitter = internal::findParent<QSplitter*>(_this);
if (Splitter)
{
Splitter->show();
}
CDockContainerWidget* Container = DockArea->dockContainer();
if (Container->isFloating())
{
CFloatingDockContainer* FloatingWidget = internal::findParent<
CFloatingDockContainer*>(Container);
FloatingWidget->show();
}
}
}
@@ -363,6 +373,27 @@ void CDockWidget::saveState(QDataStream& stream) const
}
//============================================================================
void CDockWidget::flagAsUnassigned()
{
setParent(d->DockManager);
setDockArea(nullptr);
titleBar()->setParent(this);
}
//============================================================================
bool CDockWidget::event(QEvent *e)
{
if (e->type() == QEvent::WindowTitleChange)
{
emit titleChanged(windowTitle());
}
return QFrame::event(e);
}
} // namespace ads
//---------------------------------------------------------------------------