diff options
Diffstat (limited to 'src/core/file_picker_controller.cpp')
-rw-r--r-- | src/core/file_picker_controller.cpp | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/core/file_picker_controller.cpp b/src/core/file_picker_controller.cpp index 84b5740d6..9b4521358 100644 --- a/src/core/file_picker_controller.cpp +++ b/src/core/file_picker_controller.cpp @@ -136,7 +136,7 @@ void FilePickerController::accepted(const QVariant &files) { QStringList stringList; - if (files.canConvert(QMetaType::QStringList)) { + if (files.canConvert(QMetaType{QMetaType::QStringList})) { stringList = files.toStringList(); } else if (files.canConvert<QList<QUrl> >()) { const QList<QUrl> urls = files.value<QList<QUrl>>(); @@ -179,15 +179,18 @@ void FilePickerController::filesSelectedInChooser(const QStringList &filesList) if (d_ptr->fileDialogListener) { QStringList files(filesList); base::FilePath baseDir; - if (d_ptr->mode == UploadFolder && !filesList.isEmpty() - && QFileInfo(filesList.first()).isDir()) { - // Enumerate the directory - files = listRecursively(QDir(filesList.first())); - baseDir = toFilePath(filesList.first()); + if (d_ptr->mode == UploadFolder && !filesList.isEmpty()) { + if (QFileInfo(filesList.first()).isDir()) { + // Enumerate the directory + files = listRecursively(QDir(filesList.first())); + baseDir = toFilePath(filesList.first()); + } else { + baseDir = toFilePath(filesList.first()).DirName(); + } } std::vector<blink::mojom::FileChooserFileInfoPtr> chooser_files; - for (const auto &file : qAsConst(files)) { + for (const auto &file : std::as_const(files)) { chooser_files.push_back(blink::mojom::FileChooserFileInfo::NewNativeFile( blink::mojom::NativeFileInfo::New(toFilePath(file), std::u16string()))); } @@ -198,9 +201,13 @@ void FilePickerController::filesSelectedInChooser(const QStringList &filesList) d_ptr->fileDialogListener->FileSelected( std::move(chooser_files), baseDir, static_cast<blink::mojom::FileChooserParams::Mode>(d_ptr->mode)); + + // release the fileSelectListener manually because it blocks fullscreen requests in chromium + // see QTBUG-106975 + d_ptr->fileDialogListener.reset(); } else if (d_ptr->fileSystemAccessDialogListener) { std::vector<base::FilePath> files; - for (const auto &file : qAsConst(filesList)) { + for (const auto &file : std::as_const(filesList)) { files.push_back(toFilePath(file)); } |