From b47887e127ca78ca07ef36d808adbfebbb1f1dda Mon Sep 17 00:00:00 2001 From: Mike Solar Date: Mon, 13 Jul 2026 02:34:23 +0800 Subject: [PATCH] Defer parameter editor panel raise/focus to queued invocation KDDockWidgets may need an event-loop iteration to finish opening or tabifying a dock widget before raise() can switch to it. Defer raise(), activateWindow(), and setFocus() via QMetaObject::invokeMethod with Qt::QueuedConnection after show(). --- app/widget/nodeview/nodeview.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/app/widget/nodeview/nodeview.cpp b/app/widget/nodeview/nodeview.cpp index bfde74031..cd7e1a9a6 100644 --- a/app/widget/nodeview/nodeview.cpp +++ b/app/widget/nodeview/nodeview.cpp @@ -1686,9 +1686,15 @@ void NodeView::ShowSelectedNodeInParamEditor() if (PanelWidget *panel = PanelManager::instance()->GetPanelWithName( QStringLiteral("ParamPanel"))) { panel->show(); - panel->setAsCurrentTab(); - panel->activateWindow(); - panel->setFocus(Qt::OtherFocusReason); + QMetaObject::invokeMethod(panel, &PanelWidget::raise, + Qt::QueuedConnection); + QMetaObject::invokeMethod( + panel, + [panel]() { + panel->activateWindow(); + panel->setFocus(Qt::OtherFocusReason); + }, + Qt::QueuedConnection); } }