diff options
Diffstat (limited to 'src/corelib')
-rw-r--r-- | src/corelib/platform/android/qandroidextras.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/corelib/platform/android/qandroidextras.cpp b/src/corelib/platform/android/qandroidextras.cpp index 7de28f5a12..1da8bcf265 100644 --- a/src/corelib/platform/android/qandroidextras.cpp +++ b/src/corelib/platform/android/qandroidextras.cpp @@ -501,19 +501,22 @@ public: int globalRequestCode(int localRequestCode) const { - if (!localToGlobalRequestCode.contains(localRequestCode)) { + const auto oldSize = localToGlobalRequestCode.size(); + auto &e = localToGlobalRequestCode[localRequestCode]; + if (localToGlobalRequestCode.size() != oldSize) { + // new entry, populate: int globalRequestCode = uniqueActivityRequestCode(); - localToGlobalRequestCode[localRequestCode] = globalRequestCode; + e = globalRequestCode; globalToLocalRequestCode[globalRequestCode] = localRequestCode; } - return localToGlobalRequestCode.value(localRequestCode); + return e; } bool handleActivityResult(jint requestCode, jint resultCode, jobject data) { - if (globalToLocalRequestCode.contains(requestCode)) { - q->handleActivityResult(globalToLocalRequestCode.value(requestCode), - resultCode, QJniObject(data)); + const auto it = std::as_const(globalToLocalRequestCode).find(requestCode); + if (it != globalToLocalRequestCode.cend()) { + q->handleActivityResult(*it, resultCode, QJniObject(data)); return true; } |