From 570a2f75ea757c47cab30dababbdcb812235f010 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Fri, 14 Oct 2022 09:44:46 +0200 Subject: [PATCH] Utils: Check shift pressed for directory chooser Change-Id: I69e9ff2accf51ad7f6327b6708f114a0f87ada42 Reviewed-by: Christian Kandeler --- src/libs/utils/fileutils.cpp | 9 ++++++++- src/libs/utils/fileutils.h | 3 ++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/libs/utils/fileutils.cpp b/src/libs/utils/fileutils.cpp index ce5ac3a2497..6715ff731b6 100644 --- a/src/libs/utils/fileutils.cpp +++ b/src/libs/utils/fileutils.cpp @@ -534,10 +534,17 @@ FilePath FileUtils::getSaveFilePath(QWidget *parent, FilePath FileUtils::getExistingDirectory(QWidget *parent, const QString &caption, const FilePath &dir, - QFileDialog::Options options) + QFileDialog::Options options, + bool fromDeviceIfShiftIsPressed) { bool forceNonNativeDialog = dir.needsDevice(); +#ifdef QT_GUI_LIB + if (fromDeviceIfShiftIsPressed && qApp->queryKeyboardModifiers() & Qt::ShiftModifier) { + forceNonNativeDialog = true; + } +#endif + const QStringList schemes = QStringList(QStringLiteral("file")); return firstOrEmpty(getFilePaths(dialogParent(parent), caption, diff --git a/src/libs/utils/fileutils.h b/src/libs/utils/fileutils.h index bbeb906ee34..f46f83d4c36 100644 --- a/src/libs/utils/fileutils.h +++ b/src/libs/utils/fileutils.h @@ -110,7 +110,8 @@ public: static FilePath getExistingDirectory(QWidget *parent, const QString &caption, const FilePath &dir = {}, - QFileDialog::Options options = QFileDialog::ShowDirsOnly); + QFileDialog::Options options = QFileDialog::ShowDirsOnly, + bool fromDeviceIfShiftIsPressed = false); static FilePaths getOpenFilePaths(QWidget *parent, const QString &caption,