From 70f346d8331b48bdcada97a2ce24d1671b1afd78472e9958fc5d245629999f84 Mon Sep 17 00:00:00 2001 From: Christophe Giboudeaux Date: Sun, 13 Sep 2020 10:27:30 +0000 Subject: [PATCH] Accepting request 834106 from home:Vogtinator:branches:KDE:Frameworks5 - Add patches to fix browsing kdeconnect://: * 0001-Remove-old-kio_fonts-hack-in-KCoreDirLister-hostname.patch * 0002-KUrlCompletion-accommodate-local-protocols-that-use-.patch OBS-URL: https://build.opensuse.org/request/show/834106 OBS-URL: https://build.opensuse.org/package/show/KDE:Frameworks5/kio?expand=0&rev=307 --- ...onts-hack-in-KCoreDirLister-hostname.patch | 41 ++++++++++++++++ ...ccommodate-local-protocols-that-use-.patch | 49 +++++++++++++++++++ kio.changes | 7 +++ kio.spec | 3 ++ 4 files changed, 100 insertions(+) create mode 100644 0001-Remove-old-kio_fonts-hack-in-KCoreDirLister-hostname.patch create mode 100644 0002-KUrlCompletion-accommodate-local-protocols-that-use-.patch diff --git a/0001-Remove-old-kio_fonts-hack-in-KCoreDirLister-hostname.patch b/0001-Remove-old-kio_fonts-hack-in-KCoreDirLister-hostname.patch new file mode 100644 index 0000000..1d8334d --- /dev/null +++ b/0001-Remove-old-kio_fonts-hack-in-KCoreDirLister-hostname.patch @@ -0,0 +1,41 @@ +From bd04dfb4d9dbf2d29c5a5c18bfce15f926996e5e Mon Sep 17 00:00:00 2001 +From: David Faure +Date: Fri, 11 Sep 2020 18:26:47 +0200 +Subject: [PATCH 1/2] Remove old kio_fonts hack in KCoreDirLister, hostname was + stripped incorrectly + +https://bugs.kde.org/show_bug.cgi?id=160057 worked around the fact that +kio_fonts was creating URLs like fonts://System/, and yet there's no +hostname during directory listing afterwards. + +Nowadays: +1) this hack isn't needed anymore, kio_fonts does fonts:/System/ +2) removing it actually fixes navigating from `dolphin fonts:/` +--- + src/core/kcoredirlister.cpp | 10 ---------- + 1 file changed, 10 deletions(-) + +diff --git a/src/core/kcoredirlister.cpp b/src/core/kcoredirlister.cpp +index e9a756a4..8a548949 100644 +--- a/src/core/kcoredirlister.cpp ++++ b/src/core/kcoredirlister.cpp +@@ -90,16 +90,6 @@ bool KCoreDirListerCache::listDir(KCoreDirLister *lister, const QUrl &_u, + QUrl _url(_u); + _url.setPath(QDir::cleanPath(_url.path())); // kill consecutive slashes + +- if (!_url.host().isEmpty() && KProtocolInfo::protocolClass(_url.scheme()) == QLatin1String(":local") +- && _url.scheme() != QLatin1String("file")) { +- // ":local" protocols ignore the hostname, so strip it out preventively - #160057 +- // kio_file is special cased since it does honor the hostname (by redirecting to e.g. smb) +- _url.setHost(QString()); +- if (_keep == false) { +- emit lister->redirection(_url); +- } +- } +- + // like this we don't have to worry about trailing slashes any further + _url = _url.adjusted(QUrl::StripTrailingSlash); + +-- +2.25.1 + diff --git a/0002-KUrlCompletion-accommodate-local-protocols-that-use-.patch b/0002-KUrlCompletion-accommodate-local-protocols-that-use-.patch new file mode 100644 index 0000000..21451c6 --- /dev/null +++ b/0002-KUrlCompletion-accommodate-local-protocols-that-use-.patch @@ -0,0 +1,49 @@ +From 37440b39539d32e6e2d8ba840ae670348554d0d8 Mon Sep 17 00:00:00 2001 +From: Ahmad Samir +Date: Sat, 12 Sep 2020 20:45:44 +0200 +Subject: [PATCH 2/2] KUrlCompletion: accommodate ":local" protocols that use + hostname in url + +An example of that is kdeconnect://, offering completions for it is +redundant since it uses the hostname part of the url as the deviceId (a +sequence of letters and numbers that's not easy to remember), so can't use +that, and the UDS_NAME is the pretty name (e.g. SM-J500H) users see listed in +kdeconnect:// but kdeconnect://SM-J500H doesn't work. Also because the code in +KUrlCompletion::_k_slotEntries() is expecting a list of files/dirs to offer +as completions, and not hostnames (_k_slotEntries uses addPathtoUrl helper +method), no useful completions are feasible. + +Instead if the "filename" part of the url is empty we just skip it. + +Note that this prevents the code from hitting an assert in addPathToUrl +(after applying https://invent.kde.org/frameworks/kio/-/merge_requests/127 +which is needed to make accessing devices using the kdeconnect ioslave +actually work at all). +--- + src/widgets/kurlcompletion.cpp | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/src/widgets/kurlcompletion.cpp b/src/widgets/kurlcompletion.cpp +index 88bbaace..849a0f38 100644 +--- a/src/widgets/kurlcompletion.cpp ++++ b/src/widgets/kurlcompletion.cpp +@@ -1213,9 +1213,14 @@ void KUrlCompletionPrivate::_k_slotEntries(KIO::Job *, const KIO::UDSEntryList & + entry_name = entry.stringValue(KIO::UDSEntry::UDS_NAME); + } + +- //qDebug() << "name:" << name; ++ // This can happen with kdeconnect://deviceId as a completion for kdeconnect:/, ++ // there's no fileName [and the UDS_NAME is unrelated, can't use that]. ++ // This code doesn't support completing hostnames anyway (see addPathToUrl below). ++ if (entry_name.isEmpty()) { ++ continue; ++ } + +- if ((!entry_name.isEmpty() && entry_name.at(0) == QLatin1Char('.')) && ++ if (entry_name.at(0) == QLatin1Char('.') && + (list_urls_no_hidden || + entry_name.length() == 1 || + (entry_name.length() == 2 && entry_name.at(1) == QLatin1Char('.')))) { +-- +2.25.1 + diff --git a/kio.changes b/kio.changes index 9de5b59..03d2197 100644 --- a/kio.changes +++ b/kio.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Sun Sep 13 09:41:06 UTC 2020 - Fabian Vogt + +- Add patches to fix browsing kdeconnect://: + * 0001-Remove-old-kio_fonts-hack-in-KCoreDirLister-hostname.patch + * 0002-KUrlCompletion-accommodate-local-protocols-that-use-.patch + ------------------------------------------------------------------- Sun Sep 6 12:49:33 UTC 2020 - Christophe Giboudeaux diff --git a/kio.spec b/kio.spec index 754dd1c..c753eca 100644 --- a/kio.spec +++ b/kio.spec @@ -37,6 +37,9 @@ Source2: frameworks.keyring Source99: baselibs.conf # PATCH-FIX-OPENSUSE kio_help-fallback-to-kde4-docs.patch -- allow kio_help to see into kde4 documentation, needed especially for khelpcenter5 Patch0: kio_help-fallback-to-kde4-docs.patch +# PATCH-FIX-UPSTREAM +Patch1: 0001-Remove-old-kio_fonts-hack-in-KCoreDirLister-hostname.patch +Patch2: 0002-KUrlCompletion-accommodate-local-protocols-that-use-.patch BuildRequires: extra-cmake-modules >= %{_kf5_bugfix_version} BuildRequires: fdupes BuildRequires: kf5-filesystem