Fix QQuickItem pointers

This commit is contained in:
Karol Suprynowicz 2023-08-18 16:49:14 +02:00
parent 1e8d032ea3
commit ae36233ff9

View file

@ -167,16 +167,18 @@ void QmlWindowClass::qmlToScript(const QVariant& message) {
void QmlWindowClass::sendToQml(const QVariant& message) { void QmlWindowClass::sendToQml(const QVariant& message) {
// Forward messages received from the script on to QML // Forward messages received from the script on to QML
if (asQuickItem()) { QQuickItem *quickItem = asQuickItem();
QMetaObject::invokeMethod(asQuickItem(), "fromScript", Qt::QueuedConnection, Q_ARG(QVariant, message)); if (quickItem) {
QMetaObject::invokeMethod(quickItem, "fromScript", Qt::QueuedConnection, Q_ARG(QVariant, message));
} else { } else {
qDebug() << "QmlWindowClass::sendToQml: asQuickItem() returned NULL"; qDebug() << "QmlWindowClass::sendToQml: asQuickItem() returned NULL";
} }
} }
void QmlWindowClass::clearDebugWindow() { void QmlWindowClass::clearDebugWindow() {
if (asQuickItem()) { QQuickItem *quickItem = asQuickItem();
QMetaObject::invokeMethod(asQuickItem(), "clearDebugWindow", Qt::QueuedConnection); if (quickItem) {
QMetaObject::invokeMethod(quickItem, "clearDebugWindow", Qt::QueuedConnection);
} else { } else {
qDebug() << "QmlWindowClass::clearDebugWindow: asQuickItem() returned NULL"; qDebug() << "QmlWindowClass::clearDebugWindow: asQuickItem() returned NULL";
} }
@ -200,14 +202,16 @@ void QmlWindowClass::emitWebEvent(const QVariant& webMessage) {
const QString LOWER_KEYBOARD = "_LOWER_KEYBOARD"; const QString LOWER_KEYBOARD = "_LOWER_KEYBOARD";
QString messageString = webMessage.type() == QVariant::String ? webMessage.toString() : ""; QString messageString = webMessage.type() == QVariant::String ? webMessage.toString() : "";
if (messageString.left(RAISE_KEYBOARD.length()) == RAISE_KEYBOARD) { if (messageString.left(RAISE_KEYBOARD.length()) == RAISE_KEYBOARD) {
if (asQuickItem()) { QQuickItem *quickItem = asQuickItem();
setKeyboardRaised(asQuickItem(), true, messageString == RAISE_KEYBOARD_NUMERIC); if (quickItem) {
setKeyboardRaised(quickItem, true, messageString == RAISE_KEYBOARD_NUMERIC);
} else { } else {
qDebug() << "QmlWindowClass::emitWebEvent: asQuickItem() returned NULL"; qDebug() << "QmlWindowClass::emitWebEvent: asQuickItem() returned NULL";
} }
} else if (messageString == LOWER_KEYBOARD) { } else if (messageString == LOWER_KEYBOARD) {
if (asQuickItem()) { QQuickItem *quickItem = asQuickItem();
setKeyboardRaised(asQuickItem(), false); if (quickItem) {
setKeyboardRaised(quickItem, false);
} else { } else {
qDebug() << "QmlWindowClass::emitWebEvent: asQuickItem() returned NULL"; qDebug() << "QmlWindowClass::emitWebEvent: asQuickItem() returned NULL";
} }
@ -270,8 +274,9 @@ bool QmlWindowClass::isVisible() {
return false; return false;
} }
if (asQuickItem()) { QQuickItem *quickItem = asQuickItem();
return asQuickItem()->isVisible(); if (quickItem) {
return quickItem->isVisible();
} else { } else {
qDebug() << "QmlWindowClass::isVisible: asQuickItem() returned NULL"; qDebug() << "QmlWindowClass::isVisible: asQuickItem() returned NULL";
} }
@ -288,8 +293,9 @@ glm::vec2 QmlWindowClass::getPosition() {
return {}; return {};
} }
if (asQuickItem()) { QQuickItem *quickItem = asQuickItem();
return toGlm(asQuickItem()->position()); if (quickItem) {
return toGlm(quickItem->position());
} else { } else {
qDebug() << "QmlWindowClass::getPosition: asQuickItem() returned NULL"; qDebug() << "QmlWindowClass::getPosition: asQuickItem() returned NULL";
return glm::vec2(0.0f, 0.0f); return glm::vec2(0.0f, 0.0f);
@ -302,8 +308,9 @@ void QmlWindowClass::setPosition(const glm::vec2& position) {
return; return;
} }
if (asQuickItem()) { QQuickItem *quickItem = asQuickItem();
asQuickItem()->setPosition(QPointF(position.x, position.y)); if (quickItem) {
quickItem->setPosition(QPointF(position.x, position.y));
} }
} }
@ -341,8 +348,9 @@ void QmlWindowClass::setSize(const glm::vec2& size) {
return; return;
} }
if (asQuickItem()) { QQuickItem *quickItem = asQuickItem();
asQuickItem()->setSize(QSizeF(size.x, size.y)); if (quickItem) {
quickItem->setSize(QSizeF(size.x, size.y));
} }
} }
@ -356,8 +364,9 @@ void QmlWindowClass::setTitle(const QString& title) {
return; return;
} }
if (asQuickItem()) { QQuickItem *quickItem = asQuickItem();
asQuickItem()->setProperty(TITLE_PROPERTY, title); if (quickItem) {
quickItem->setProperty(TITLE_PROPERTY, title);
} }
} }
@ -387,7 +396,8 @@ void QmlWindowClass::raise() {
return; return;
} }
if (asQuickItem()) { QQuickItem *quickItem = asQuickItem();
QMetaObject::invokeMethod(asQuickItem(), "raise", Qt::DirectConnection); if (quickItem) {
QMetaObject::invokeMethod(quickItem, "raise", Qt::DirectConnection);
} }
} }