diff options
Diffstat (limited to 'kde-frameworks/kio/files/kio-5.38.0-kioexec.patch')
-rw-r--r-- | kde-frameworks/kio/files/kio-5.38.0-kioexec.patch | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/kde-frameworks/kio/files/kio-5.38.0-kioexec.patch b/kde-frameworks/kio/files/kio-5.38.0-kioexec.patch new file mode 100644 index 000000000000..1cf2a1bfb834 --- /dev/null +++ b/kde-frameworks/kio/files/kio-5.38.0-kioexec.patch @@ -0,0 +1,87 @@ +From c76c1486ec79e8a16329207e9b293eed1244adfb Mon Sep 17 00:00:00 2001 +From: Jonathan Marten <jjm@keelhaul.me.uk> +Date: Mon, 25 Sep 2017 08:56:04 +0100 +Subject: kioexec: Watch the file when it has finished copying + +To eliminate a spurious "The file has changed, do you want to upload +it?" dialogue. + +BUG:384500 + +Differential Revision: https://phabricator.kde.org/D7841 +--- + src/kioexec/main.cpp | 49 +++++++++++++++++++++++++++---------------------- + 1 file changed, 27 insertions(+), 22 deletions(-) + +diff --git a/src/kioexec/main.cpp b/src/kioexec/main.cpp +index 6b0ec1d..615dfbf 100644 +--- a/src/kioexec/main.cpp ++++ b/src/kioexec/main.cpp +@@ -118,11 +118,6 @@ KIOExec::KIOExec(const QStringList &args, bool tempFiles, const QString &suggest + KIO::Job *job = KIO::file_copy(url, dest); + jobList.append(job); + +- // Tell kioexecd to watch the file for changes. +- OrgKdeKIOExecdInterface kioexecd(QStringLiteral("org.kde.kioexecd"), QStringLiteral("/modules/kioexecd"), QDBusConnection::sessionBus()); +- kioexecd.watch(file.path, file.url.toString()); +- mUseDaemon = !kioexecd.lastError().isValid(); +- + connect(job, &KJob::result, this, &KIOExec::slotResult); + } + } +@@ -141,25 +136,35 @@ KIOExec::KIOExec(const QStringList &args, bool tempFiles, const QString &suggest + + void KIOExec::slotResult(KJob *job) + { +- if (job && job->error()) { +- // That error dialog would be queued, i.e. not immediate... +- //job->showErrorDialog(); +- if ((job->error() != KIO::ERR_USER_CANCELED)) +- KMessageBox::error(nullptr, job->errorString()); +- +- QString path = static_cast<KIO::FileCopyJob*>(job)->destUrl().path(); +- +- QList<FileInfo>::Iterator it = fileList.begin(); +- for (; it != fileList.end(); ++it) { +- if (it->path == path) { +- break; ++ if (job) { ++ KIO::FileCopyJob *copyJob = static_cast<KIO::FileCopyJob *>(job); ++ const QString path = copyJob->destUrl().path(); ++ ++ if (job->error()) { ++ // That error dialog would be queued, i.e. not immediate... ++ //job->showErrorDialog(); ++ if ((job->error() != KIO::ERR_USER_CANCELED)) ++ KMessageBox::error(nullptr, job->errorString()); ++ ++ auto it = std::find_if(fileList.begin(), fileList.end(), ++ [&path](const FileInfo &i) { return (i.path == path); }); ++ if (it != fileList.end()) { ++ fileList.erase(it); ++ } else { ++ qDebug() << path << " not found in list"; + } + } +- +- if (it != fileList.end()) { +- fileList.erase(it); +- } else { +- qDebug() << path << " not found in list"; ++ else ++ { ++ // Tell kioexecd to watch the file for changes. ++ const QString dest = copyJob->srcUrl().toString(); ++ qDebug() << "Telling kioexecd to watch path" << path << "dest" << dest; ++ OrgKdeKIOExecdInterface kioexecd(QStringLiteral("org.kde.kioexecd"), QStringLiteral("/modules/kioexecd"), QDBusConnection::sessionBus()); ++ kioexecd.watch(path, dest); ++ mUseDaemon = !kioexecd.lastError().isValid(); ++ if (!mUseDaemon) { ++ qDebug() << "Not using kioexecd"; ++ } + } + } + +-- +cgit v0.11.2 + |