Added proper support for closable feature, now the close button is disabled for floating widgets

This commit is contained in:
Uwe Kindler
2018-10-12 15:18:05 +02:00
parent 11e5f9c95a
commit 8637c89a6b
5 changed files with 69 additions and 2 deletions

View File

@@ -91,6 +91,17 @@ struct FloatingDockContainerPrivate
{
DraggingState = StateId;
}
/**
* Disables the window close button if the content is not closable
*/
void disableCloseButton()
{
auto Flags = _this->windowFlags();
Flags |= Qt::CustomizeWindowHint;
Flags &= ~Qt::WindowCloseButtonHint;
_this->setWindowFlags(Flags);
}
};
// struct FloatingDockContainerPrivate
@@ -250,6 +261,10 @@ CFloatingDockContainer::CFloatingDockContainer(CDockAreaWidget* DockArea) :
CFloatingDockContainer(DockArea->dockManager())
{
d->DockContainer->addDockArea(DockArea);
if (!DockArea->features().testFlag(CDockWidget::DockWidgetClosable))
{
d->disableCloseButton();
}
}
@@ -258,6 +273,10 @@ CFloatingDockContainer::CFloatingDockContainer(CDockWidget* DockWidget) :
CFloatingDockContainer(DockWidget->dockManager())
{
d->DockContainer->addDockWidget(CenterDockWidgetArea, DockWidget);
if (!DockWidget->features().testFlag(CDockWidget::DockWidgetClosable))
{
d->disableCloseButton();
}
}
//============================================================================
@@ -515,6 +534,10 @@ bool CFloatingDockContainer::restoreState(QXmlStreamReader& Stream, bool Testing
{
return false;
}
if (!d->DockContainer->features().testFlag(CDockWidget::DockWidgetClosable))
{
d->disableCloseButton();
}
onDockAreasAddedOrRemoved();
return true;
}