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,