diff options
author | Carl Kittelberger | 2022-04-17 09:48:44 +0200 |
---|---|---|
committer | Carl Kittelberger | 2022-04-17 09:48:44 +0200 |
commit | a68794ec33e9b31c11b9e2fa9f79a684c19f64d7 (patch) | |
tree | 3b81bd24a50e88fb680a0b4ecabda0ee5f1d74ab /0001-Use-QFileDialog-for-selecting-directories.patch | |
download | aur-xdg-desktop-portal-kde-steamos-kiofusefix.tar.gz |
Initial commit.
Diffstat (limited to '0001-Use-QFileDialog-for-selecting-directories.patch')
-rw-r--r-- | 0001-Use-QFileDialog-for-selecting-directories.patch | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/0001-Use-QFileDialog-for-selecting-directories.patch b/0001-Use-QFileDialog-for-selecting-directories.patch new file mode 100644 index 000000000000..6910dcff1b56 --- /dev/null +++ b/0001-Use-QFileDialog-for-selecting-directories.patch @@ -0,0 +1,69 @@ +From eb684e42e768e4c57dbf81abf51f7597df164814 Mon Sep 17 00:00:00 2001 +From: Fabian Vogt <fabian@ritter-vogt.de> +Date: Mon, 17 Jan 2022 22:05:09 +0100 +Subject: [PATCH 1/3] Use QFileDialog for selecting directories + +KFileWidget is not as good at selecting directories as KDirSelectDialog +from plasma-integration. On top of that, directory selection appears to be +entirely broken currently. + +Use KDirSelectDialog through QFileDialog if possible. + +BUG: 437505 +--- + src/filechooser.cpp | 32 ++++++++++++++++++++++++++++++++ + 1 file changed, 32 insertions(+) + +diff --git a/src/filechooser.cpp b/src/filechooser.cpp +index 4302c24..97a48fc 100644 +--- a/src/filechooser.cpp ++++ b/src/filechooser.cpp +@@ -13,6 +13,7 @@ + #include <QDBusMetaType> + #include <QDialogButtonBox> + #include <QFile> ++#include <QFileDialog> + #include <QGridLayout> + #include <QLabel> + #include <QLoggingCategory> +@@ -256,6 +257,37 @@ uint FileChooserPortal::OpenFile(const QDBusObjectPath &handle, + return retCode; + } + ++ // Use QFileDialog for most directory requests to utilize ++ // plasma-integration's KDirSelectDialog ++ if (directory && !options.contains(QStringLiteral("choices"))) { ++ QFileDialog dirDialog; ++ dirDialog.setWindowTitle(title); ++ dirDialog.setModal(modalDialog); ++ dirDialog.setFileMode(QFileDialog::Directory); ++ dirDialog.setOptions(QFileDialog::ShowDirsOnly); ++ dirDialog.setSupportedSchemes(QStringList{QStringLiteral("file")}); ++ if (!acceptLabel.isEmpty()) { ++ dirDialog.setLabelText(QFileDialog::Accept, acceptLabel); ++ } ++ ++ dirDialog.winId(); // Trigger window creation ++ Utils::setParentWindow(&dirDialog, parent_window); ++ ++ if (dirDialog.exec() != QDialog::Accepted) { ++ return 1; ++ } ++ ++ const auto urls = dirDialog.selectedUrls(); ++ if (urls.empty()) { ++ return 2; ++ } ++ ++ results.insert(QStringLiteral("uris"), QUrl::toStringList(urls)); ++ results.insert(QStringLiteral("writable"), true); ++ ++ return 0; ++ } ++ + // for handling of options - choices + QScopedPointer<QWidget> optionsWidget; + // to store IDs for choices along with corresponding comboboxes/checkboxes +-- +2.35.0 + |