diff options
Diffstat (limited to 'src/core/file_picker_controller.cpp')
-rw-r--r-- | src/core/file_picker_controller.cpp | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/src/core/file_picker_controller.cpp b/src/core/file_picker_controller.cpp index b81d7788a..9b4521358 100644 --- a/src/core/file_picker_controller.cpp +++ b/src/core/file_picker_controller.cpp @@ -78,16 +78,16 @@ void FilePickerController::accepted(const QStringList &files) base::FilePath filePath = toFilePath(urlString).NormalizePathSeparators(); std::vector<base::FilePath::StringType> pathComponents; // Splits the file URL into scheme, host name, path and file name. - filePath.GetComponents(&pathComponents); + pathComponents = filePath.GetComponents(); QString absolutePath; -#if !defined(OS_WIN) +#if !defined(Q_OS_WIN) absolutePath = "/"; #endif QString scheme = toQt(pathComponents[0]); if (scheme.size() > 5) { -#if defined(OS_WIN) +#if defined(Q_OS_WIN) // There is no slash at the end of the file scheme and it is valid on Windows: file:C:/ if (scheme.size() == 7 && scheme.at(5).isLetter() && scheme.at(6) == ':') { absolutePath += scheme.at(5) + ":/"; @@ -95,7 +95,7 @@ void FilePickerController::accepted(const QStringList &files) #endif qWarning("Ignoring invalid item in FilePickerController::accepted(QStringList): %s", qPrintable(urlString)); continue; -#if defined(OS_WIN) +#if defined(Q_OS_WIN) } #endif } @@ -104,7 +104,7 @@ void FilePickerController::accepted(const QStringList &files) if (base::FilePath::IsSeparator(urlString.at(5).toLatin1()) && base::FilePath::IsSeparator(urlString.at(6).toLatin1()) && !base::FilePath::IsSeparator(urlString.at(7).toLatin1())) { -#if defined(OS_WIN) +#if defined(Q_OS_WIN) if (urlString.at(8) != ':' && pathComponents.size() > 2) { absolutePath += "//"; #else @@ -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)); } |