aboutsummaryrefslogtreecommitdiffstats
path: root/src/quickdialogs2/quickdialogs2quickimpl/qquickfiledialogimpl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quickdialogs2/quickdialogs2quickimpl/qquickfiledialogimpl.cpp')
-rw-r--r--src/quickdialogs2/quickdialogs2quickimpl/qquickfiledialogimpl.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qquickfiledialogimpl.cpp b/src/quickdialogs2/quickdialogs2quickimpl/qquickfiledialogimpl.cpp
index 64c624b5ec..a51c6bd3e6 100644
--- a/src/quickdialogs2/quickdialogs2quickimpl/qquickfiledialogimpl.cpp
+++ b/src/quickdialogs2/quickdialogs2quickimpl/qquickfiledialogimpl.cpp
@@ -41,6 +41,8 @@
#include "qquickfiledialogimpl_p_p.h"
#include <QtCore/qloggingcategory.h>
+#include <QtGui/private/qguiapplication_p.h>
+#include <QtGui/qpa/qplatformtheme.h>
#include <QtQml/qqmlinfo.h>
#include <QtQml/qqmlfile.h>
#include <QtQuickDialogs2Utils/private/qquickfilenamefilter_p.h>
@@ -135,7 +137,15 @@ void QQuickFileDialogImplPrivate::updateSelectedFile(const QString &oldFolderPat
}
}
- if (newSelectedFilePath.isEmpty()) {
+ static const bool preselectFirstFile = []() {
+ const QVariant envVar = qEnvironmentVariable("QT_QUICK_DIALOGS_PRESELECT_FIRST_FILE");
+ if (envVar.isValid() && envVar.canConvert<bool>())
+ return envVar.toBool();
+ return QGuiApplicationPrivate::platformTheme()->themeHint(
+ QPlatformTheme::PreselectFirstFileInDirectory).toBool();
+ }();
+
+ if (preselectFirstFile && newSelectedFilePath.isEmpty()) {
// When entering into a directory that isn't a parent of the old one, the first
// file delegate should be selected.
// TODO: is there a cheaper way to do this? QDirIterator doesn't support sorting,