forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
kio-5.38.0-kioexec.patch
87 lines (79 loc) · 3.4 KB
/
kio-5.38.0-kioexec.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
From c76c1486ec79e8a16329207e9b293eed1244adfb Mon Sep 17 00:00:00 2001
From: Jonathan Marten <[email protected]>
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