From a84c895b17089c36f950ae565fd5f6b98bcc7a14 Mon Sep 17 00:00:00 2001 From: Assam Boudjelthia Date: Fri, 31 Jan 2020 17:04:54 +0200 Subject: Android: Fix native fileDialog not waiting for user selection Add an event loop to wait for user file selection in native fileDialog Task-number: QTBUG-77214 Change-Id: I3d97d6c3f46cf2a8ed0ee6f98e555e8d62e12cc3 Reviewed-by: Ville Voutilainen Reviewed-by: Andy Shaw --- src/plugins/platforms/android/qandroidplatformfiledialoghelper.cpp | 3 +++ src/plugins/platforms/android/qandroidplatformfiledialoghelper.h | 2 ++ 2 files changed, 5 insertions(+) (limited to 'src/plugins/platforms') diff --git a/src/plugins/platforms/android/qandroidplatformfiledialoghelper.cpp b/src/plugins/platforms/android/qandroidplatformfiledialoghelper.cpp index 7585b7eb95..fb979ab6cc 100644 --- a/src/plugins/platforms/android/qandroidplatformfiledialoghelper.cpp +++ b/src/plugins/platforms/android/qandroidplatformfiledialoghelper.cpp @@ -100,10 +100,13 @@ bool QAndroidPlatformFileDialogHelper::show(Qt::WindowFlags windowFlags, Qt::Win void QAndroidPlatformFileDialogHelper::exec() { + m_eventLoop.exec(QEventLoop::DialogExec); } void QAndroidPlatformFileDialogHelper::hide() { + if (m_eventLoop.isRunning()) + m_eventLoop.exit(); QtAndroidPrivate::unregisterActivityResultListener(this); } diff --git a/src/plugins/platforms/android/qandroidplatformfiledialoghelper.h b/src/plugins/platforms/android/qandroidplatformfiledialoghelper.h index e445aa2fef..5cd26af7c9 100644 --- a/src/plugins/platforms/android/qandroidplatformfiledialoghelper.h +++ b/src/plugins/platforms/android/qandroidplatformfiledialoghelper.h @@ -41,6 +41,7 @@ #define QANDROIDPLATFORMFILEDIALOGHELPER_H #include +#include #include #include @@ -72,6 +73,7 @@ public: bool handleActivityResult(jint requestCode, jint resultCode, jobject data) override; private: + QEventLoop m_eventLoop; QUrl m_selectedFile; }; -- cgit v1.2.3