aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/platform/android/qandroidquickviewembedding.cpp
diff options
context:
space:
mode:
authorSoheil Armin <soheil.armin@qt.io>2024-04-20 16:49:22 +0300
committerSoheil Armin <soheil.armin@qt.io>2024-05-22 15:53:57 +0300
commit9166e9ffb62a16ed94743a9080772e8f27ba0299 (patch)
tree673490f0c948c95c027845aa3cc17d7db5b70c67 /src/quick/platform/android/qandroidquickviewembedding.cpp
parent1163e6a420968508b67e803c3e1f197d5b97cc52 (diff)
Android: Add QAndroidQuickView class that owns QAndroidViewSignalManager
Previously QAndroidViewSignalManager was a direct child of the QQuickView. In JNI calls that we did not have a reference to the signal manager, we had to use findChild to get access to the instance of it. We add QAndroidQuickView as a QQuickView subclass that owns the QAndroidViewSignalManager instance. Task-number: QTBUG-124488 Change-Id: I02ad10756a4af1ac82f130f349e7c8b6f563c70c Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Diffstat (limited to 'src/quick/platform/android/qandroidquickviewembedding.cpp')
-rw-r--r--src/quick/platform/android/qandroidquickviewembedding.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/src/quick/platform/android/qandroidquickviewembedding.cpp b/src/quick/platform/android/qandroidquickviewembedding.cpp
index f6d4f04b22..925120bc09 100644
--- a/src/quick/platform/android/qandroidquickviewembedding.cpp
+++ b/src/quick/platform/android/qandroidquickviewembedding.cpp
@@ -53,14 +53,13 @@ namespace QtAndroidQuickViewEmbedding
qmlUrl,
importPaths] {
QWindow *parentWindow = reinterpret_cast<QWindow *>(parentWindowReference);
- QQuickView *view = new QQuickView(parentWindow);
+ QAndroidQuickView *view = new QAndroidQuickView(parentWindow);
QQmlEngine *engine = view->engine();
- new QAndroidViewSignalManager(view);
- QObject::connect(view, &QQuickView::statusChanged,
- [qtViewObject](QQuickView::Status status) {
+ QObject::connect(view, &QAndroidQuickView::statusChanged,
+ [qtViewObject](QAndroidQuickView::Status status) {
qtViewObject.callMethod<void>("handleStatusChange", status);
});
- view->setResizeMode(QQuickView::SizeRootObjectToView);
+ view->setResizeMode(QAndroidQuickView::SizeRootObjectToView);
view->setColor(QColor(Qt::transparent));
view->setWidth(width);
view->setHeight(height);
@@ -76,9 +75,9 @@ namespace QtAndroidQuickViewEmbedding
});
}
- std::pair<QQuickView *, QQuickItem *> getViewAndRootObject(jlong windowReference)
+ std::pair<QAndroidQuickView *, QQuickItem *> getViewAndRootObject(jlong windowReference)
{
- QQuickView *view = reinterpret_cast<QQuickView *>(windowReference);
+ QAndroidQuickView *view = reinterpret_cast<QAndroidQuickView *>(windowReference);
QQuickItem *rootObject = Q_LIKELY(view) ? view->rootObject() : nullptr;
return std::make_pair(view, rootObject);
}
@@ -195,7 +194,7 @@ namespace QtAndroidQuickViewEmbedding
return -1;
}
- QAndroidViewSignalManager *signalManager = view->findChild<QAndroidViewSignalManager *>();
+ QAndroidViewSignalManager *signalManager = view->signalManager();
const QByteArray javaArgClass = QJniObject(argType).className();
const char *qArgName =
QMetaType(javaToQMetaType.value(javaArgClass, QMetaType::Type::UnknownType)).name();
@@ -299,7 +298,7 @@ namespace QtAndroidQuickViewEmbedding
return false;
}
- QAndroidViewSignalManager *signalManager = view->findChild<QAndroidViewSignalManager *>();
+ QAndroidViewSignalManager *signalManager = view->signalManager();
if (!signalManager->connections.contains(signalListenerId))
return false;