Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Vogtinator:boo1194788
xdg-desktop-portal-kde
0001-Use-QFileDialog-for-selecting-directories....
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0001-Use-QFileDialog-for-selecting-directories.patch of Package xdg-desktop-portal-kde
From 93fb226574ce507536febff1182e881c42f76e2b 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] 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 | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/filechooser.cpp b/src/filechooser.cpp index c94de1a..a7d6174 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> @@ -255,6 +256,42 @@ 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); + 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; + } + + QStringList urlStrings; + urlStrings.reserve(urls.size()); + for (auto &url : urls) { + urlStrings << url.toString(); + } + + results.insert(QStringLiteral("uris"), urlStrings); + 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.33.1
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor