FileChooser portal: set current_file only when file already exists

According to xdg-desktop-portal documentation, current_file should be set
only when such a file already exists and xdg-desktop-portal-gnome enforces
this by being totally broken when current_file is set to a non-existent path

Pick-to: 6.4 6.3 6.2
Change-Id: Ie3c80a7c6fd0cf23eea88ddec2149f5904c63394
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
bb10
Ilya Fedin 2022-09-10 00:22:41 +04:00
parent ce16eb2679
commit 7927b05b2f
1 changed files with 6 additions and 3 deletions

View File

@ -175,9 +175,12 @@ void QXdgDesktopPortalFileDialog::openPortal(Qt::WindowFlags windowFlags, Qt::Wi
if (!d->selectedFiles.isEmpty()) {
// current_file for the file to be pre-selected, current_name for the file name to be pre-filled
// current_file accepts absolute path while current_name accepts just file name
options.insert("current_file"_L1, QFile::encodeName(d->selectedFiles.first()).append('\0'));
options.insert("current_name"_L1, QFileInfo(d->selectedFiles.first()).fileName());
// current_file accepts absolute path and requires the file to exist
// while current_name accepts just file name
QFileInfo selectedFileInfo(d->selectedFiles.first());
if (selectedFileInfo.exists())
options.insert("current_file"_L1, QFile::encodeName(d->selectedFiles.first()).append('\0'));
options.insert("current_name"_L1, selectedFileInfo.fileName());
}
}