summaryrefslogtreecommitdiffstats
path: root/src/plugins/platformthemes
diff options
context:
space:
mode:
authorIlya Fedin <fedin-ilja2010@ya.ru>2022-09-10 00:22:41 +0400
committerIlya Fedin <fedin-ilja2010@ya.ru>2022-09-10 12:37:07 +0400
commit7927b05b2fed0d6004435fcb48954f609de288ca (patch)
tree5875fb11753720a51acc2149af1b44371a4bdd75 /src/plugins/platformthemes
parentce16eb2679f69b28d2debd1ce18a99f7279b4295 (diff)
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>
Diffstat (limited to 'src/plugins/platformthemes')
-rw-r--r--src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp
index 2ef591a591..ec3872f174 100644
--- a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp
+++ b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp
@@ -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());
}
}