Fixed emission of top level event in DockContainerWidget

This commit is contained in:
Uwe Kindler
2022-11-07 16:28:27 +01:00
parent 0073870480
commit 5a9f23a9ad
4 changed files with 72 additions and 68 deletions

View File

@@ -1360,6 +1360,7 @@ CDockContainerWidget::~CDockContainerWidget()
CDockAreaWidget* CDockContainerWidget::addDockWidget(DockWidgetArea area, CDockWidget* Dockwidget,
CDockAreaWidget* DockAreaWidget)
{
auto TopLevelDockWidget = topLevelDockWidget();
CDockAreaWidget* OldDockArea = Dockwidget->dockAreaWidget();
if (OldDockArea)
{
@@ -1367,14 +1368,28 @@ CDockAreaWidget* CDockContainerWidget::addDockWidget(DockWidgetArea area, CDockW
}
Dockwidget->setDockManager(d->DockManager);
CDockAreaWidget* DockArea;
if (DockAreaWidget)
{
return d->addDockWidgetToDockArea(area, Dockwidget, DockAreaWidget);
DockArea = d->addDockWidgetToDockArea(area, Dockwidget, DockAreaWidget);
}
else
{
return d->addDockWidgetToContainer(area, Dockwidget);
DockArea = d->addDockWidgetToContainer(area, Dockwidget);
}
if (TopLevelDockWidget)
{
auto NewTopLevelDockWidget = topLevelDockWidget();
// If the container contained only one visible dock widget, the we need
// to emit a top level event for this widget because it is not the one and
// only visible docked widget anymore
if (!NewTopLevelDockWidget)
{
CDockWidget::emitTopLevelEventForWidget(TopLevelDockWidget, false);
}
}
return DockArea;
}