From 9166e9ffb62a16ed94743a9080772e8f27ba0299 Mon Sep 17 00:00:00 2001 From: Soheil Armin Date: Sat, 20 Apr 2024 16:49:22 +0300 Subject: 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 --- .../platform/android/qandroidquickviewembedding.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'src/quick/platform/android/qandroidquickviewembedding.cpp') 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(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("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 getViewAndRootObject(jlong windowReference) + std::pair getViewAndRootObject(jlong windowReference) { - QQuickView *view = reinterpret_cast(windowReference); + QAndroidQuickView *view = reinterpret_cast(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 *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 *signalManager = view->signalManager(); if (!signalManager->connections.contains(signalListenerId)) return false; -- cgit v1.2.3