[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