[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