[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [krusader] krusader/FileSystem: FileSystem: Fix refresh after copy/move/{create dir} on non-local fi
From: Alexander Bikadorov <null () kde ! org>
Date: 2017-05-31 19:23:13
Message-ID: E1dG9D7-00015r-50 () code ! kde ! org
[Download RAW message or body]
Git commit 55e6d04f5184f414a64a3353e907927414578e44 by Alexander Bikadorov.
Committed on 31/05/2017 at 19:16.
Pushed by abikadorov into branch 'master'.
FileSystem: Fix refresh after copy/move/{create dir} on non-local filesystem
A proper fix instead of cf495c53.
M +8 -4 krusader/FileSystem/defaultfilesystem.cpp
M +1 -1 krusader/FileSystem/defaultfilesystem.h
M +2 -5 krusader/FileSystem/filesystem.cpp
M +1 -1 krusader/FileSystem/filesystem.h
M +2 -1 krusader/FileSystem/virtualfilesystem.cpp
M +1 -1 krusader/FileSystem/virtualfilesystem.h
https://commits.kde.org/krusader/55e6d04f5184f414a64a3353e907927414578e44
diff --git a/krusader/FileSystem/defaultfilesystem.cpp \
b/krusader/FileSystem/defaultfilesystem.cpp index ea0bf7a0..e19808e3 100644
--- a/krusader/FileSystem/defaultfilesystem.cpp
+++ b/krusader/FileSystem/defaultfilesystem.cpp
@@ -66,8 +66,10 @@ void DefaultFileSystem::copyFiles(const QList<QUrl> &urls, const \
QUrl &destinati
KIO::JobFlags flags = showProgressInfo ? KIO::DefaultFlags : \
KIO::HideProgressInfo;
- KrJob *krJob = KrJob::createCopyJob(mode, urls, destination, flags);
- connect(krJob, &KrJob::started, this, [=](KIO::Job *job) { connectJob(job, \
dest); }); + KrJob *krJob = KrJob::createCopyJob(mode, urls, dest, flags);
+ // destination can be a full path with filename when copying/moving a single \
file + const QUrl destDir = dest.adjusted(QUrl::RemoveFilename);
+ connect(krJob, &KrJob::started, this, [=](KIO::Job *job) { connectJob(job, \
destDir); });
if (mode == KIO::CopyJob::Move) { // notify source about removed files
connect(krJob, &KrJob::started, this, [=](KIO::Job *job) { \
connectSourceFileSystem(job, urls); }); }
@@ -100,19 +102,21 @@ void DefaultFileSystem::connectSourceFileSystem(KJob *job, \
const QList<QUrl> url }
}
-void DefaultFileSystem::addFiles(const QList<QUrl> &fileUrls, KIO::CopyJob::CopyMode \
mode, QString dir) +void DefaultFileSystem::addFiles(const QList<QUrl> &fileUrls, \
KIO::CopyJob::CopyMode mode, + const QString &dir)
{
QUrl destination(_currentDirectory);
if (!dir.isEmpty()) {
destination.setPath(QDir::cleanPath(destination.path() + '/' + dir));
const QString scheme = destination.scheme();
if (scheme == "tar" || scheme == "zip" || scheme == "krarc") {
- if (QDir(cleanUrl(destination).path()).exists())
+ if (QDir(destination.path()).exists())
// if we get out from the archive change the protocol
destination.setScheme("file");
}
}
+ destination = ensureTrailingSlash(destination); // destination is always a \
directory copyFiles(fileUrls, destination, mode);
}
diff --git a/krusader/FileSystem/defaultfilesystem.h \
b/krusader/FileSystem/defaultfilesystem.h index fcbb59d6..b2d21a74 100644
--- a/krusader/FileSystem/defaultfilesystem.h
+++ b/krusader/FileSystem/defaultfilesystem.h
@@ -63,7 +63,7 @@ public:
void dropFiles(const QUrl &destination, QDropEvent *event) Q_DECL_OVERRIDE;
void addFiles(const QList<QUrl> &fileUrls, KIO::CopyJob::CopyMode mode,
- QString dir = "") Q_DECL_OVERRIDE;
+ const QString &dir = "") Q_DECL_OVERRIDE;
void mkDir(const QString &name) Q_DECL_OVERRIDE;
void rename(const QString &fileName, const QString &newName) Q_DECL_OVERRIDE;
/// Return URL for file name - even if file does not exist.
diff --git a/krusader/FileSystem/filesystem.cpp b/krusader/FileSystem/filesystem.cpp
index 2e9cce1e..614792b7 100644
--- a/krusader/FileSystem/filesystem.cpp
+++ b/krusader/FileSystem/filesystem.cpp
@@ -176,12 +176,9 @@ void FileSystem::deleteFiles(const QStringList &fileNames, bool \
moveToTrash)
void FileSystem::connectJob(KJob *job, const QUrl &destination)
{
- // destination can be a full path with filename when copying/moving a single \
file
- const QUrl destDir = destination.adjusted(QUrl::RemoveFilename);
-
- connect(job, &KIO::Job::result, this, [=]() { emit fileSystemChanged(destDir); \
}); + connect(job, &KIO::Job::result, this, [=]() { emit \
fileSystemChanged(destination); });
// (additional) direct refresh if on local fs because watcher is too slow
- const bool refresh = cleanUrl(destDir) == _currentDirectory && isLocal();
+ const bool refresh = cleanUrl(destination) == _currentDirectory && isLocal();
connect(job, &KIO::Job::result, this, [=](KJob* job) { slotJobResult(job, \
refresh); }); }
diff --git a/krusader/FileSystem/filesystem.h b/krusader/FileSystem/filesystem.h
index 3ecfff06..05265ae1 100644
--- a/krusader/FileSystem/filesystem.h
+++ b/krusader/FileSystem/filesystem.h
@@ -94,7 +94,7 @@ public:
/// Copy (copy, move or link) files to the current filesystem directory or to \
"dir", the
/// directory name relative to the current dir. May implemented async.
virtual void addFiles(const QList<QUrl> &fileUrls, KIO::CopyJob::CopyMode mode,
- QString dir = "") = 0;
+ const QString &dir = "") = 0;
/// Create a new directory in the current directory. May implemented async.
virtual void mkDir(const QString &name) = 0;
/// Rename file/directory in the current directory. May implemented async.
diff --git a/krusader/FileSystem/virtualfilesystem.cpp \
b/krusader/FileSystem/virtualfilesystem.cpp index e0e0eb5f..4b44cf00 100644
--- a/krusader/FileSystem/virtualfilesystem.cpp
+++ b/krusader/FileSystem/virtualfilesystem.cpp
@@ -87,7 +87,8 @@ void VirtualFileSystem::dropFiles(const QUrl &destination, \
QDropEvent *event) copyFiles(urls, destination);
}
-void VirtualFileSystem::addFiles(const QList<QUrl> &fileUrls, KIO::CopyJob::CopyMode \
/*mode*/, QString dir) +void VirtualFileSystem::addFiles(const QList<QUrl> &fileUrls, \
KIO::CopyJob::CopyMode /*mode*/, + const QString \
&dir) {
QUrl destination(_currentDirectory);
if (!dir.isEmpty()) {
diff --git a/krusader/FileSystem/virtualfilesystem.h \
b/krusader/FileSystem/virtualfilesystem.h index c6b1bc0e..1d43b273 100644
--- a/krusader/FileSystem/virtualfilesystem.h
+++ b/krusader/FileSystem/virtualfilesystem.h
@@ -55,7 +55,7 @@ public:
/// Add virtual files to the current directory.
void addFiles(const QList<QUrl> &fileUrls, KIO::CopyJob::CopyMode mode = \
KIO::CopyJob::Copy,
- QString dir = "") Q_DECL_OVERRIDE;
+ const QString &dir = "") Q_DECL_OVERRIDE;
/// Create a virtual directory. Only possible in the root directory.
void mkDir(const QString &name) Q_DECL_OVERRIDE;
/// Rename a (real) file in the current directory.
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic