forked from qt-creator/qt-creator
QmlDesigner: fix windowHandle() is nullptr warning
Change-Id: Ib5ec37ebce4899cc0af2be44a58928d43ce4c757 Reviewed-by: Henning Gründl <henning.gruendl@qt.io>
This commit is contained in:
@@ -19,11 +19,32 @@ WindowManager::WindowManager()
|
|||||||
connect(qGuiApp, &QGuiApplication::focusWindowChanged, this, &WindowManager::focusWindowChanged);
|
connect(qGuiApp, &QGuiApplication::focusWindowChanged, this, &WindowManager::focusWindowChanged);
|
||||||
connect(
|
connect(
|
||||||
Core::ICore::instance(), &Core::ICore::coreAboutToClose, this, &WindowManager::aboutToQuit);
|
Core::ICore::instance(), &Core::ICore::coreAboutToClose, this, &WindowManager::aboutToQuit);
|
||||||
connect(
|
|
||||||
Core::ICore::instance()->mainWindow()->windowHandle(),
|
if (!connectMainWindowHandle())
|
||||||
&QWindow::visibleChanged,
|
Core::ICore::instance()->mainWindow()->installEventFilter(this);
|
||||||
this,
|
}
|
||||||
&WindowManager::mainWindowVisibleChanged);
|
|
||||||
|
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()
|
void WindowManager::registerDeclarativeType()
|
||||||
|
@@ -35,6 +35,7 @@ signals:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
WindowManager();
|
WindowManager();
|
||||||
|
bool connectMainWindowHandle();
|
||||||
|
bool eventFilter(QObject *watched, QEvent *event) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace QmlDesigner
|
} // namespace QmlDesigner
|
||||||
|
Reference in New Issue
Block a user