forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
kde-frameworks/kio: Fix huge 'file has changed' annoyance
Package-Manager: Portage-2.3.10, Repoman-2.3.3
- Loading branch information
Showing
2 changed files
with
167 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
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 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
# Copyright 1999-2017 Gentoo Foundation | ||
# Distributed under the terms of the GNU General Public License v2 | ||
|
||
EAPI=6 | ||
|
||
KDE_TEST="forceoptional" | ||
VIRTUALX_REQUIRED="test" | ||
inherit kde5 | ||
|
||
DESCRIPTION="Framework providing transparent file and data management" | ||
LICENSE="LGPL-2+" | ||
KEYWORDS="~amd64 ~arm ~arm64 ~x86" | ||
IUSE="acl +handbook kerberos +kwallet X" | ||
|
||
RDEPEND=" | ||
$(add_frameworks_dep karchive) | ||
$(add_frameworks_dep kbookmarks) | ||
$(add_frameworks_dep kcodecs) | ||
$(add_frameworks_dep kcompletion) | ||
$(add_frameworks_dep kconfig) | ||
$(add_frameworks_dep kconfigwidgets) | ||
$(add_frameworks_dep kcoreaddons) | ||
$(add_frameworks_dep kdbusaddons) | ||
$(add_frameworks_dep ki18n) | ||
$(add_frameworks_dep kiconthemes) | ||
$(add_frameworks_dep kitemviews) | ||
$(add_frameworks_dep kjobwidgets) | ||
$(add_frameworks_dep knotifications) | ||
$(add_frameworks_dep kservice) | ||
$(add_frameworks_dep ktextwidgets) | ||
$(add_frameworks_dep kwidgetsaddons) | ||
$(add_frameworks_dep kwindowsystem) | ||
$(add_frameworks_dep kxmlgui) | ||
$(add_frameworks_dep solid) | ||
$(add_qt_dep qtdbus) | ||
$(add_qt_dep qtgui) | ||
$(add_qt_dep qtnetwork 'ssl') | ||
$(add_qt_dep qtscript) | ||
$(add_qt_dep qtwidgets) | ||
$(add_qt_dep qtxml) | ||
dev-libs/libxml2 | ||
dev-libs/libxslt | ||
acl? ( | ||
sys-apps/attr | ||
virtual/acl | ||
) | ||
kerberos? ( virtual/krb5 ) | ||
kwallet? ( $(add_frameworks_dep kwallet) ) | ||
X? ( $(add_qt_dep qtx11extras) ) | ||
" | ||
DEPEND="${RDEPEND} | ||
$(add_qt_dep qtconcurrent) | ||
handbook? ( $(add_frameworks_dep kdoctools) ) | ||
test? ( sys-libs/zlib ) | ||
X? ( | ||
x11-libs/libX11 | ||
x11-libs/libXrender | ||
x11-proto/xproto | ||
) | ||
" | ||
PDEPEND=" | ||
$(add_frameworks_dep kded) | ||
" | ||
|
||
# tests hang | ||
RESTRICT+=" test" | ||
|
||
PATCHES=( "${FILESDIR}/${P}-kioexec.patch" ) | ||
|
||
src_configure() { | ||
local mycmakeargs=( | ||
$(cmake-utils_use_find_package acl ACL) | ||
$(cmake-utils_use_find_package handbook KF5DocTools) | ||
$(cmake-utils_use_find_package kerberos GSSAPI) | ||
$(cmake-utils_use_find_package kwallet KF5Wallet) | ||
$(cmake-utils_use_find_package X X11) | ||
) | ||
|
||
kde5_src_configure | ||
} |