diff options
| author | Petri Virkkunen <petri.virkkunen@qt.io> | 2025-07-11 14:34:19 +0300 |
|---|---|---|
| committer | Petri Virkkunen <petri.virkkunen@qt.io> | 2025-08-08 16:25:56 +0300 |
| commit | f82d8386b67cb37d36165f4faab25616d5fdf656 (patch) | |
| tree | 54a6445e3f1f83d3e233370b91fa8ea256b2110c /src/quick/platform/android/qandroidquickviewembedding.cpp | |
| parent | 012f554473f021158c18ada4a046d1249a7ed7c9 (diff) | |
QQ4A: Add possibility to register signals before QML is loaded
This commit adds a queue mechanism and API in QAndroidViewSignalManager
that allows callers to add signal listeners before the QML view has
been loaded.
API Added to QAndroidViewSignalManager always returns true, but might
still fail if a signal with the desired signalName does not exist. If
using the QtQuickViewContent API, this should never happen, but with
the QtQuickView API, this is a possibility with typos or signal names
that are computed with some logic in code.
Internally, QAndroidViewSignalManager listens to the
QQuickView::statusChanged signal to detect when the QML view is done
loading.
Task-number: QTBUG-137057
Change-Id: I2ea95f096517f2b7f45a60f236923d42cb5cf1fe
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.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/quick/platform/android/qandroidquickviewembedding.cpp b/src/quick/platform/android/qandroidquickviewembedding.cpp index 8b6114bb4e..4c09aff70c 100644 --- a/src/quick/platform/android/qandroidquickviewembedding.cpp +++ b/src/quick/platform/android/qandroidquickviewembedding.cpp @@ -170,16 +170,16 @@ namespace QtAndroidQuickViewEmbedding { Q_ASSERT(env); - auto [view, rootObject] = getViewAndRootObject(windowReference); - if (!rootObject) { + auto [view, _] = getViewAndRootObject(windowReference); + if (!view) { qWarning("Cannot connect to signal %s %s", qPrintable(QJniObject(signalName).toString()), uninitializedViewMessage); - return -1; + return false; } QAndroidViewSignalManager *signalManager = view->signalManager(); return signalManager->addConnection(QJniObject(signalName).toString(), argTypes, - QJniObject(listener), *rootObject); + QJniObject(listener)); } bool removeRootObjectSignalListener(JNIEnv *, jobject, jlong windowReference, |
