QmlDesigner: fix windowHandle() is nullptr warning

Change-Id: Ib5ec37ebce4899cc0af2be44a58928d43ce4c757
Reviewed-by: Henning Gründl <henning.gruendl@qt.io>
This commit is contained in:
Tim Jenßen
2025-04-04 17:47:44 +02:00
committed by Tim Jenssen
parent 7e902d3c77
commit 4e4ffd3cc9
2 changed files with 28 additions and 6 deletions

View File

@@ -19,11 +19,32 @@ WindowManager::WindowManager()
connect(qGuiApp, &QGuiApplication::focusWindowChanged, this, &WindowManager::focusWindowChanged);
connect(
Core::ICore::instance(), &Core::ICore::coreAboutToClose, this, &WindowManager::aboutToQuit);
connect(
Core::ICore::instance()->mainWindow()->windowHandle(),
&QWindow::visibleChanged,
this,
&WindowManager::mainWindowVisibleChanged);
if (!connectMainWindowHandle())
Core::ICore::instance()->mainWindow()->installEventFilter(this);
}
bool WindowManager::connectMainWindowHandle()
{
if (QWindow *windowHandle = Core::ICore::instance()->mainWindow()->windowHandle()) {
QMetaObject::Connection success = connect(
windowHandle,
&QWindow::visibleChanged,
this,
&WindowManager::mainWindowVisibleChanged,
Qt::UniqueConnection);
return success;
}
return false;
}
bool WindowManager::eventFilter(QObject *watched, QEvent *event)
{
if (watched == Core::ICore::instance()->mainWindow() && event->type() == QEvent::WinIdChange) {
connectMainWindowHandle();
Core::ICore::instance()->mainWindow()->removeEventFilter(this);
}
return QObject::eventFilter(watched, event);
}
void WindowManager::registerDeclarativeType()

View File

@@ -35,6 +35,7 @@ signals:
private:
WindowManager();
bool connectMainWindowHandle();
bool eventFilter(QObject *watched, QEvent *event) override;
};
} // namespace QmlDesigner