From ce5579e8f964941afc3105c268c252ce63aa46e8 Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Mon, 22 Mar 2021 03:13:00 +0400 Subject: [PATCH] Unify gtk/xdp file dialog getters --- .../platform/linux/linux_gtk_file_dialog.cpp | 13 ++++---- .../platform/linux/linux_xdp_file_dialog.cpp | 30 +++++++++++-------- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/Telegram/SourceFiles/platform/linux/linux_gtk_file_dialog.cpp b/Telegram/SourceFiles/platform/linux/linux_gtk_file_dialog.cpp index 7228a25279..9befbf8973 100644 --- a/Telegram/SourceFiles/platform/linux/linux_gtk_file_dialog.cpp +++ b/Telegram/SourceFiles/platform/linux/linux_gtk_file_dialog.cpp @@ -681,12 +681,15 @@ bool Get( } dialog.selectFile(startFile); - int res = dialog.exec(); + const auto res = dialog.exec(); - QString path = dialog.directory().absolutePath(); - if (path != cDialogLastPath()) { - cSetDialogLastPath(path); - Local::writeSettings(); + if (type != Type::ReadFolder) { + // Save last used directory for all queries except directory choosing. + const auto path = dialog.directory().absolutePath(); + if (!path.isEmpty() && path != cDialogLastPath()) { + cSetDialogLastPath(path); + Local::writeSettings(); + } } if (res == QDialog::Accepted) { diff --git a/Telegram/SourceFiles/platform/linux/linux_xdp_file_dialog.cpp b/Telegram/SourceFiles/platform/linux/linux_xdp_file_dialog.cpp index 3749f6c4b3..ecbe52ed51 100644 --- a/Telegram/SourceFiles/platform/linux/linux_xdp_file_dialog.cpp +++ b/Telegram/SourceFiles/platform/linux/linux_xdp_file_dialog.cpp @@ -592,6 +592,11 @@ void XDPFileDialog::gotResponse( if (const auto i = results.find("uris"); i != end(results)) { _selectedFiles = base::Platform::GlibVariantCast< std::vector>(i->second); + + _directory = _selectedFiles.empty() + ? Glib::ustring() + : Glib::ustring( + Glib::path_get_dirname(_selectedFiles.back())); } if (const auto i = results.find("current_filter"); @@ -688,7 +693,18 @@ bool Get( dialog.setDirectory(QFileInfo(startFile).absoluteDir().absolutePath()); dialog.selectFile(startFile); - int res = dialog.exec(); + const auto res = dialog.exec(); + + if (type != Type::ReadFolder) { + // Save last used directory for all queries except directory choosing. + const auto path = dialog.directory().path(); + if (!path.isEmpty() + && !path.contains(docRegExp) + && path != cDialogLastPath()) { + cSetDialogLastPath(path); + Local::writeSettings(); + } + } if (res == QDialog::Accepted) { QStringList selectedFilesStrings; @@ -702,18 +718,6 @@ bool Get( } else { files = selectedFilesStrings.mid(0, 1); } - - QString path = files.isEmpty() - ? QString() - : QFileInfo(files.back()).absoluteDir().absolutePath(); - - if (!path.isEmpty() - && !path.contains(docRegExp) - && path != cDialogLastPath()) { - cSetDialogLastPath(path); - Local::writeSettings(); - } - return true; }