Added CDockManager::lockDockWidgetFeaturesGlobally functionality to globally "freeze" the current docking layout

This commit is contained in:
Uwe Kindler
2024-01-23 13:29:41 +01:00
parent 1a543e946d
commit ed6636ae26
10 changed files with 137 additions and 8 deletions

View File

@@ -80,7 +80,7 @@ struct DockWidgetPrivate
QWidget* Widget = nullptr;
CDockWidgetTab* TabWidget = nullptr;
CDockWidget::DockWidgetFeatures Features = CDockWidget::DefaultDockWidgetFeatures;
CDockManager* DockManager = nullptr;
QPointer<CDockManager> DockManager;
QPointer<CDockAreaWidget> DockArea;
QAction* ToggleViewAction = nullptr;
bool Closed = false;
@@ -511,10 +511,19 @@ void CDockWidget::setFeatures(DockWidgetFeatures features)
return;
}
d->Features = features;
notifyFeaturesChanged();
}
//============================================================================
void CDockWidget::notifyFeaturesChanged()
{
Q_EMIT featuresChanged(d->Features);
d->TabWidget->onDockWidgetFeaturesChanged();
if(CDockAreaWidget* DockArea = dockAreaWidget())
{
DockArea->onDockWidgetFeaturesChanged();
}
}
@@ -530,7 +539,14 @@ void CDockWidget::setFeature(DockWidgetFeature flag, bool on)
//============================================================================
CDockWidget::DockWidgetFeatures CDockWidget::features() const
{
return d->Features;
if (d->DockManager)
{
return d->Features &~ d->DockManager->globallyLockedDockWidgetFeatures();
}
else
{
return d->Features;
}
}