aboutsummaryrefslogtreecommitdiffstats
path: root/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogdelegate.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quickdialogs/quickdialogsquickimpl/qquickfiledialogdelegate.cpp')
-rw-r--r--src/quickdialogs/quickdialogsquickimpl/qquickfiledialogdelegate.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogdelegate.cpp b/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogdelegate.cpp
index 71b1fccbc5..369176f844 100644
--- a/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogdelegate.cpp
+++ b/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogdelegate.cpp
@@ -11,6 +11,7 @@
#include <QtQuickTemplates2/private/qquickitemdelegate_p_p.h>
#include "qquickfiledialogimpl_p.h"
+#include "qquickfiledialogimpl_p_p.h"
#include "qquickfolderdialogimpl_p.h"
QT_BEGIN_NAMESPACE
@@ -67,6 +68,16 @@ void QQuickFileDialogDelegatePrivate::chooseFile()
Q_ASSERT(fileDialog);
// Otherwise it's a file, so select it and close the dialog.
fileDialog->setSelectedFile(file);
+
+ // Prioritize closing the dialog with QQuickDialogPrivate::handleClick() over QQuickDialog::accept()
+ const QQuickFileDialogImplAttached *attached = QQuickFileDialogImplPrivate::get(fileDialog)->attachedOrWarn();
+ if (Q_LIKELY(attached)) {
+ auto *openButton = attached->buttonBox()->standardButton(QPlatformDialogHelper::Open);
+ if (Q_LIKELY(openButton)) {
+ emit openButton->clicked();
+ return;
+ }
+ }
fileDialog->accept();
}
}