summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'kde-frameworks/kio/files/kio-5.75.0-fix-special-char-file-selection.patch')
-rw-r--r--kde-frameworks/kio/files/kio-5.75.0-fix-special-char-file-selection.patch201
1 files changed, 0 insertions, 201 deletions
diff --git a/kde-frameworks/kio/files/kio-5.75.0-fix-special-char-file-selection.patch b/kde-frameworks/kio/files/kio-5.75.0-fix-special-char-file-selection.patch
deleted file mode 100644
index 74ffc55207d7..000000000000
--- a/kde-frameworks/kio/files/kio-5.75.0-fix-special-char-file-selection.patch
+++ /dev/null
@@ -1,201 +0,0 @@
-From 4321b8ff8ac7a8ffdea1068d8bbc734a0a34c0d0 Mon Sep 17 00:00:00 2001
-From: Andreas Bontozoglou <a.bontozoglou@gmail.com>
-Date: Wed, 14 Oct 2020 15:01:02 +0100
-Subject: [PATCH] [BUG] Fixing regression on selecting files that contain `#`
-
-Introduced in tokenize() in https://invent.kde.org/frameworks/kio/-/merge_requests/89.
-Fixing by using setPath and adding test-case for parsing such filenames.
----
- autotests/kfilewidgettest.cpp | 37 +++++++++++++++++++--------------
- src/filewidgets/kfilewidget.cpp | 31 +++++++++++++++------------
- 2 files changed, 39 insertions(+), 29 deletions(-)
-
-diff --git a/autotests/kfilewidgettest.cpp b/autotests/kfilewidgettest.cpp
-index 859ea958..ac34e387 100644
---- a/autotests/kfilewidgettest.cpp
-+++ b/autotests/kfilewidgettest.cpp
-@@ -24,6 +24,7 @@
- #include <QAbstractItemView>
- #include <QDropEvent>
- #include <QMimeData>
-+#include <QStringList>
- #include <QStringLiteral>
- #include <QList>
- #include <QUrl>
-@@ -530,58 +531,62 @@ private Q_SLOTS:
- }
-
- void testTokenize_data()
-- {
-- // Real filename (as in how they are stored in the fs)
-- QTest::addColumn<QList<QString>>("fileNames");
-+ {
-+ // Real filename (as in how they are stored in the fs)
-+ QTest::addColumn<QStringList>("fileNames");
- // Escaped value of the text-box in the dialog
- QTest::addColumn<QString>("expectedCurrentText");
-
-- QTest::newRow("simple") << QList<QString>{"test2"} << QString("test2");
-+ QTest::newRow("simple") << QStringList{"test2"} << QString("test2");
-
- // When a single file with space is selected, it is _not_ quoted ...
-- QTest::newRow("space-single-file")
-- << QList<QString>{"test space"}
-+ QTest::newRow("space-single-file")
-+ << QStringList{"test space"}
- << QString("test space");
-
- // However, when multiple files are selected, they are quoted
- QTest::newRow("space-multi-file")
-- << QList<QString>{"test space", "test2"}
-+ << QStringList{"test space", "test2"}
- << QString("\"test space\" \"test2\"");
-
- // All quotes in names should be escaped, however since this is a single
- // file, the whole name will not be escaped.
- QTest::newRow("quote-single-file")
-- << QList<QString>{"test\"quote"}
-+ << QStringList{"test\"quote"}
- << QString("test\\\"quote");
--
-+
- // Escape multiple files. Files should also be wrapped in ""
- // Note that we are also testing quote at the end of the name
- QTest::newRow("quote-multi-file")
-- << QList<QString>{"test\"quote", "test2-quote\"", "test"}
-+ << QStringList{"test\"quote", "test2-quote\"", "test"}
- << QString("\"test\\\"quote\" \"test2-quote\\\"\" \"test\"");
-
- // Ok, enough with quotes... lets do some backslashes
- // Backslash literals in file names - Unix only case
- QTest::newRow("backslash-single-file")
-- << QList<QString>{"test\\backslash"}
-+ << QStringList{"test\\backslash"}
- << QString("test\\\\backslash");
-
- QTest::newRow("backslash-multi-file")
-- << QList<QString>{"test\\back\\slash", "test"}
-+ << QStringList{"test\\back\\slash", "test"}
- << QString("\"test\\\\back\\\\slash\" \"test\"");
-
- QTest::newRow("double-backslash-multi-file")
-- << QList<QString>{"test\\\\back\\slash", "test"}
-+ << QStringList{"test\\\\back\\slash", "test"}
- << QString("\"test\\\\\\\\back\\\\slash\" \"test\"");
-
- QTest::newRow("double-backslash-end")
-- << QList<QString>{"test\\\\"}
-+ << QStringList{"test\\\\"}
- << QString("test\\\\\\\\");
-
- QTest::newRow("single-backslash-end")
-- << QList<QString>{"some thing", "test\\"}
-+ << QStringList{"some thing", "test\\"}
- << QString("\"some thing\" \"test\\\\\"");
-
-+ QTest::newRow("sharp")
-+ << QStringList{"some#thing"}
-+ << QString("some#thing");
-+
- }
-
- void testTokenize()
-@@ -589,7 +594,7 @@ private Q_SLOTS:
- // We will use setSelectedUrls([QUrl]) here in order to check correct
- // filename escaping. Afterwards we will accept() the dialog to confirm
- // correct result
-- QFETCH(QList<QString>, fileNames);
-+ QFETCH(QStringList, fileNames);
- QFETCH(QString, expectedCurrentText);
-
- QTemporaryDir tempDir;
-diff --git a/src/filewidgets/kfilewidget.cpp b/src/filewidgets/kfilewidget.cpp
-index 1bbf3e58..32ca0617 100644
---- a/src/filewidgets/kfilewidget.cpp
-+++ b/src/filewidgets/kfilewidget.cpp
-@@ -789,8 +789,8 @@ static QString relativePathOrUrl(const QUrl &baseUrl, const QUrl &url);
- /**
- * Escape the given Url so that is fit for use in the selected list of file. This
- * mainly handles double quote (") characters. These are used to separate entries
-- * in the list, however, if `"` appears in the filename (or path), this will be
-- * escaped as `\"`. Later, the tokenizer is able to understand the difference
-+ * in the list, however, if `"` appears in the filename (or path), this will be
-+ * escaped as `\"`. Later, the tokenizer is able to understand the difference
- * and do the right thing
- */
- static QString escapeDoubleQuotes(QString && path);
-@@ -1623,7 +1623,7 @@ void KFileWidget::setSelectedUrl(const QUrl &url)
- }
-
- void KFileWidget::setSelectedUrls(const QList<QUrl> &urls)
--{
-+{
- if (urls.isEmpty()) {
- return;
- }
-@@ -1717,7 +1717,7 @@ QList<QUrl> KFileWidget::selectedUrls() const
-
- QList<QUrl> KFileWidgetPrivate::tokenize(const QString &line) const
- {
-- qCDebug(KIO_KFILEWIDGETS_FW) << "Tokenizing:" << line;
-+ qCDebug(KIO_KFILEWIDGETS_FW) << "Tokenizing:" << line;
-
- QList<QUrl> urls;
- QUrl u(ops->url().adjusted(QUrl::RemoveFilename));
-@@ -1727,15 +1727,21 @@ QList<QUrl> KFileWidgetPrivate::tokenize(const QString &line) const
-
- // A helper that creates, validates and appends a new url based
- // on the given filename.
-- auto addUrl = [u, &urls](const QString & partial_name)
-- {
-+ auto addUrl = [u, &urls](const QString &partial_name)
-+ {
- if (partial_name.trimmed().isEmpty()) {
- return;
- }
-
-+ // We have to use setPath here, so that something like "test#file"
-+ // isn't interpreted to have path "test" and fragment "file".
-+ QUrl partial_url;
-+ partial_url.setPath(partial_name);
-+
- // This returns QUrl(partial_name) for absolute URLs.
- // Otherwise, returns the concatenated url.
-- QUrl finalUrl = u.resolved(QUrl(partial_name));
-+ const QUrl finalUrl = u.resolved(partial_url);
-+
- if (finalUrl.isValid()) {
- urls.append(finalUrl);
- } else {
-@@ -1758,7 +1764,7 @@ QList<QUrl> KFileWidgetPrivate::tokenize(const QString &line) const
- escape = false;
- continue;
- }
--
-+
- // Handle escape start
- if (ch.toLatin1() == '\\') {
- escape = true;
-@@ -1777,15 +1783,14 @@ QList<QUrl> KFileWidgetPrivate::tokenize(const QString &line) const
- partial_name += ch;
- }
-
-- // Handle the last item which is buffered in
-- // partial_name. This is required for single-file
-- // selection dialogs since the name will not be
-- // wrapped in quotes
-+ // Handle the last item which is buffered in partial_name. This is
-+ // required for single-file selection dialogs since the name will not
-+ // be wrapped in quotes
- if (!partial_name.isEmpty()) {
- addUrl(partial_name);
- partial_name.clear();
- }
--
-+
- return urls;
- }
-
---
-GitLab
-