Compare commits
No commits in common. 'ubuntu/plucky' and 'ubuntu/focal' have entirely different histories.
ubuntu/plu
...
ubuntu/foc
@ -0,0 +1,10 @@
|
||||
usr/include/libfm-qt/*.h
|
||||
usr/include/libfm-qt/customactions/*.h
|
||||
usr/include/libfm-qt/core/*.h
|
||||
usr/include/libfm-qt/core/legacy/*.h
|
||||
usr/include/libfm-qt/core/vfs/*.h
|
||||
|
||||
usr/lib/*/*.so
|
||||
usr/lib/*/pkgconfig/*
|
||||
|
||||
usr/share/cmake/fm-qt/*.cmake
|
@ -0,0 +1 @@
|
||||
usr/share/libfm-qt/translations
|
@ -1 +0,0 @@
|
||||
usr/lib/*/*.so.*
|
File diff suppressed because it is too large
Load Diff
@ -1,3 +0,0 @@
|
||||
usr/share/libfm-qt6/archivers.list
|
||||
usr/share/libfm-qt6/terminals.list
|
||||
usr/share/mime/packages/libfm-qt6-mimetypes.xml
|
@ -1,8 +0,0 @@
|
||||
usr/include/libfm-qt6/*.h
|
||||
usr/include/libfm-qt6/core/*.h
|
||||
usr/include/libfm-qt6/core/legacy/*.h
|
||||
usr/include/libfm-qt6/core/vfs/*.h
|
||||
usr/include/libfm-qt6/customactions/*.h
|
||||
usr/lib/*/*.so
|
||||
usr/lib/*/pkgconfig/*
|
||||
usr/share/cmake/fm-qt6/*.cmake
|
@ -1 +0,0 @@
|
||||
usr/share/libfm-qt6/translations
|
@ -0,0 +1,4 @@
|
||||
usr/lib/*/*.so.*
|
||||
usr/share/libfm-qt/terminals.list
|
||||
usr/share/libfm-qt/archivers.list
|
||||
usr/share/mime/packages/libfm-qt-mimetypes.xml
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,115 @@
|
||||
From 7e79e591eb536603da92ee537bf949490b1259fc Mon Sep 17 00:00:00 2001
|
||||
From: Tsu Jan <tsujan2000@gmail.com>
|
||||
Date: Sun, 21 Apr 2019 14:11:14 +0430
|
||||
Subject: [PATCH] Don't ignore creation-deletion sequences
|
||||
|
||||
Fixes https://github.com/lxqt/pcmanfm-qt/issues/944
|
||||
|
||||
Previously, if a file was in addition queue and then it came into the deletion
|
||||
queue, its addition and deletion were both ignored. That was wrong and could
|
||||
result in showing nonexistent files because addition can also happen in
|
||||
directory list job before being processed by file info job.
|
||||
|
||||
Also process accumulated changes only after finishing the current info job and
|
||||
don't clear all deletion paths after processing them (because, logically, only
|
||||
those paths that can be deleted should be removed).
|
||||
---
|
||||
src/core/folder.cpp | 60 +++++++++++++++++++++++----------------------
|
||||
1 file changed, 31 insertions(+), 29 deletions(-)
|
||||
|
||||
diff --git a/src/core/folder.cpp b/src/core/folder.cpp
|
||||
index 6c2b27d..2385a8b 100644
|
||||
--- a/src/core/folder.cpp
|
||||
+++ b/src/core/folder.cpp
|
||||
@@ -228,16 +228,6 @@ void Folder::onFileInfoFinished() {
|
||||
return;
|
||||
}
|
||||
|
||||
- // process the changes accumulated during this info job
|
||||
- if(filesystem_info_pending // means a pending change; see "onFileSystemInfoFinished()"
|
||||
- || !paths_to_update.empty() || !paths_to_add.empty() || !paths_to_del.empty()) {
|
||||
- QTimer::singleShot(0, this, &Folder::processPendingChanges);
|
||||
- }
|
||||
- // there's no pending change at the moment; let the next one be processed
|
||||
- else {
|
||||
- has_idle_update_handler = false;
|
||||
- }
|
||||
-
|
||||
FileInfoList files_to_add;
|
||||
FileInfoList files_to_delete;
|
||||
std::vector<FileInfoPair> files_to_update;
|
||||
@@ -271,6 +261,16 @@ void Folder::onFileInfoFinished() {
|
||||
Q_EMIT filesChanged(files_to_update);
|
||||
}
|
||||
Q_EMIT contentChanged();
|
||||
+
|
||||
+ // process the changes accumulated during this info job
|
||||
+ if(filesystem_info_pending // means a pending change; see "onFileSystemInfoFinished()"
|
||||
+ || !paths_to_update.empty() || !paths_to_add.empty() || !paths_to_del.empty()) {
|
||||
+ QTimer::singleShot(0, this, &Folder::processPendingChanges);
|
||||
+ }
|
||||
+ // there's no pending change at the moment; let the next one be processed
|
||||
+ else {
|
||||
+ has_idle_update_handler = false;
|
||||
+ }
|
||||
}
|
||||
|
||||
void Folder::processPendingChanges() {
|
||||
@@ -314,21 +314,24 @@ void Folder::processPendingChanges() {
|
||||
}
|
||||
|
||||
// process deletion
|
||||
- if(!paths_to_del.empty()) {
|
||||
- FileInfoList deleted_files;
|
||||
- for(const auto &path: paths_to_del) {
|
||||
- auto name = path.baseName();
|
||||
- auto it = files_.find(name.get());
|
||||
- if(it != files_.end()) {
|
||||
- deleted_files.push_back(it->second);
|
||||
- files_.erase(it);
|
||||
- }
|
||||
+ FileInfoList deleted_files;
|
||||
+ auto path_it = paths_to_del.begin();
|
||||
+ while(path_it != paths_to_del.end()) {
|
||||
+ const auto& path = *path_it;
|
||||
+ auto name = path.baseName();
|
||||
+ auto it = files_.find(name.get());
|
||||
+ if(it != files_.end()) {
|
||||
+ deleted_files.push_back(it->second);
|
||||
+ files_.erase(it);
|
||||
+ path_it = paths_to_del.erase(path_it);
|
||||
}
|
||||
- if(!deleted_files.empty()) {
|
||||
- Q_EMIT filesRemoved(deleted_files);
|
||||
- Q_EMIT contentChanged();
|
||||
+ else {
|
||||
+ ++path_it;
|
||||
}
|
||||
- paths_to_del.clear();
|
||||
+ }
|
||||
+ if(!deleted_files.empty()) {
|
||||
+ Q_EMIT filesRemoved(deleted_files);
|
||||
+ Q_EMIT contentChanged();
|
||||
}
|
||||
|
||||
if(pending_change_notify) {
|
||||
@@ -404,13 +407,12 @@ void Folder::eventFileDeleted(const FilePath& path) {
|
||||
bool deleted = true;
|
||||
// qDebug() << "delete " << path.baseName().get();
|
||||
// G_LOCK(lists);
|
||||
- if(std::find(paths_to_add.cbegin(), paths_to_add.cend(), path) != paths_to_add.cend()) {
|
||||
- // if the file was going to be added, just remove it from the addition queue
|
||||
- paths_to_add.erase(std::remove(paths_to_add.begin(), paths_to_add.end(), path), paths_to_add.cend());
|
||||
- }
|
||||
- else if(std::find(paths_to_del.cbegin(), paths_to_del.cend(), path) == paths_to_del.cend()) {
|
||||
+ /* WARNING: If the file is in the addition queue, we shouldn not remove it from that queue
|
||||
+ and ignore its deletion because it may have been added by the directory list job, in
|
||||
+ which case, ignoring an addition-deletion sequence would result in a nonexistent file. */
|
||||
+ if(std::find(paths_to_del.cbegin(), paths_to_del.cend(), path) == paths_to_del.cend()) {
|
||||
paths_to_del.push_back(path);
|
||||
- // the update queue should be cancelled for a file that is going to be deleted
|
||||
+ // the update queue can be cancelled for a file that is going to be deleted
|
||||
paths_to_update.erase(std::remove(paths_to_update.begin(), paths_to_update.end(), path), paths_to_update.cend());
|
||||
}
|
||||
else {
|
||||
|
@ -0,0 +1,49 @@
|
||||
Description: Fix DND for MTP mounted folders
|
||||
Author: Tsu Jan <tsujan2000@gmail.com>
|
||||
Bug-Upstream: https://github.com/lxqt/pcmanfm-qt/issues/301
|
||||
Applied-Upstream: https://github.com/lxqt/libfm-qt/commit/7de18bc89b9b47f66de54a7e347bf8d391d44a48
|
||||
Last-Update: 2019-08-17
|
||||
--- a/src/foldermodel.cpp
|
||||
+++ b/src/foldermodel.cpp
|
||||
@@ -384,7 +384,7 @@ QStringList FolderModel::mimeTypes() con
|
||||
// the real implementation is in FolderView::childDropEvent().
|
||||
types << "XdndDirectSave0";
|
||||
types << "text/uri-list";
|
||||
- // types << "x-special/gnome-copied-files";
|
||||
+ types << QStringLiteral("libfm/files"); // see FolderModel::mimeData() below
|
||||
return types;
|
||||
}
|
||||
|
||||
@@ -407,6 +407,9 @@ QMimeData* FolderModel::mimeData(const Q
|
||||
}
|
||||
}
|
||||
data->setData("text/uri-list", urilist);
|
||||
+ // NOTE: The mimetype "text/uri-list" changes the list in QMimeData::setData() to get URLs
|
||||
+ // but some protocols (like MTP) may need the original list to query file info.
|
||||
+ data->setData(QStringLiteral("libfm/files"), urilist);
|
||||
|
||||
return data;
|
||||
}
|
||||
@@ -442,10 +445,19 @@ bool FolderModel::dropMimeData(const QMi
|
||||
destPath = path();
|
||||
}
|
||||
|
||||
+ Fm::FilePathList srcPaths;
|
||||
+ // try to get paths from the original data
|
||||
+ if(data->hasFormat(QStringLiteral("libfm/files"))) {
|
||||
+ QByteArray _data = data->data(QStringLiteral("libfm/files"));
|
||||
+ srcPaths = pathListFromUriList(_data.data());
|
||||
+ }
|
||||
+ if(srcPaths.empty() && data->hasUrls()) {
|
||||
+ srcPaths = Fm::pathListFromQUrls(data->urls());
|
||||
+ }
|
||||
+
|
||||
// FIXME: should we put this in dropEvent handler of FolderView instead?
|
||||
- if(data->hasUrls()) {
|
||||
+ if(!srcPaths.empty()) {
|
||||
//qDebug("drop action: %d", action);
|
||||
- auto srcPaths = pathListFromQUrls(data->urls());
|
||||
switch(action) {
|
||||
case Qt::CopyAction:
|
||||
FileOperation::copyFiles(srcPaths, destPath);
|
||||
|
@ -0,0 +1,97 @@
|
||||
From 3d23ec7f0857cbc1ae8e42bdd27ab179a7e8344f Mon Sep 17 00:00:00 2001
|
||||
From: "Hong Jen Yee (PCMan)" <pcman.tw@gmail.com>
|
||||
Date: Fri, 19 Apr 2019 01:19:08 +0800
|
||||
Subject: [PATCH] Fix the license header of code we took from libfm (they
|
||||
should use LGPL2 instead of GPL2). - src/core/vfs/vfs-menu.c -
|
||||
src/core/vfs/vfs-search.c These files are taken from libfm which has been
|
||||
relicensed to LGPL 2 on 2014-09-05 by Andrey N. Gritsenko after consulting
|
||||
other contributors.
|
||||
|
||||
---
|
||||
src/core/vfs/vfs-menu.c | 21 ++++++++++-----------
|
||||
src/core/vfs/vfs-search.c | 37 +++++++++++++++++--------------------
|
||||
2 files changed, 27 insertions(+), 31 deletions(-)
|
||||
|
||||
diff --git a/src/core/vfs/vfs-menu.c b/src/core/vfs/vfs-menu.c
|
||||
index c541159..069b1bc 100644
|
||||
--- a/src/core/vfs/vfs-menu.c
|
||||
+++ b/src/core/vfs/vfs-menu.c
|
||||
@@ -4,20 +4,19 @@
|
||||
*
|
||||
* Copyright 2012-2014 Andriy Grytsenko (LStranger) <andrej@rep.kiev.ua>
|
||||
*
|
||||
- * This program is free software; you can redistribute it and/or modify
|
||||
- * it under the terms of the GNU General Public License as published by
|
||||
- * the Free Software Foundation; either version 2 of the License, or
|
||||
- * (at your option) any later version.
|
||||
+ * This library is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU Lesser General Public
|
||||
+ * License as published by the Free Software Foundation; either
|
||||
+ * version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
- * This program is distributed in the hope that it will be useful,
|
||||
+ * This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
- * GNU General Public License for more details.
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ * Lesser General Public License for more details.
|
||||
*
|
||||
- * You should have received a copy of the GNU General Public License
|
||||
- * along with this program; if not, write to the Free Software
|
||||
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
- * MA 02110-1301, USA.
|
||||
+ * You should have received a copy of the GNU Lesser General Public
|
||||
+ * License along with this library; if not, write to the Free Software
|
||||
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
diff --git a/src/core/vfs/vfs-search.c b/src/core/vfs/vfs-search.c
|
||||
index 0a64fb6..92b932c 100644
|
||||
--- a/src/core/vfs/vfs-search.c
|
||||
+++ b/src/core/vfs/vfs-search.c
|
||||
@@ -1,25 +1,22 @@
|
||||
/*
|
||||
- * fm-vfs-search.c
|
||||
- *
|
||||
- * Copyright 2012 Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
|
||||
- * Copyright 2010 Shae Smittle <starfall87@gmail.com>
|
||||
- *
|
||||
- * This program is free software; you can redistribute it and/or modify
|
||||
- * it under the terms of the GNU General Public License as published by
|
||||
- * the Free Software Foundation; either version 2 of the License, or
|
||||
- * (at your option) any later version.
|
||||
- *
|
||||
- * This program is distributed in the hope that it will be useful,
|
||||
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
- * GNU General Public License for more details.
|
||||
- *
|
||||
- * You should have received a copy of the GNU General Public License
|
||||
- * along with this program; if not, write to the Free Software
|
||||
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
- * MA 02110-1301, USA.
|
||||
- *
|
||||
+ * fm-vfs-search.c
|
||||
*
|
||||
+ * Copyright 2012 Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
|
||||
+ * Copyright 2010 Shae Smittle <starfall87@gmail.com>
|
||||
+ *
|
||||
+ * This library is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU Lesser General Public
|
||||
+ * License as published by the Free Software Foundation; either
|
||||
+ * version 2.1 of the License, or (at your option) any later version.
|
||||
+ *
|
||||
+ * This library is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ * Lesser General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU Lesser General Public
|
||||
+ * License along with this library; if not, write to the Free Software
|
||||
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
|
@ -0,0 +1,36 @@
|
||||
From 6cb5f38d2c1261b782b16da45bb323b069db94fe Mon Sep 17 00:00:00 2001
|
||||
From: Tsu Jan <tsujan2000@gmail.com>
|
||||
Date: Mon, 8 Apr 2019 07:13:09 +0430
|
||||
Subject: [PATCH] Fixed SMB recursive copy
|
||||
|
||||
Fixes https://github.com/lxqt/libfm-qt/issues/385 by trying to set dir permissions only once and ignoring possible errors (that happen with SMB and, maybe, other protocols).
|
||||
---
|
||||
src/core/filetransferjob.cpp | 9 +++++----
|
||||
1 file changed, 5 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/core/filetransferjob.cpp b/src/core/filetransferjob.cpp
|
||||
index 4039c58..6b44576 100644
|
||||
--- a/src/core/filetransferjob.cpp
|
||||
+++ b/src/core/filetransferjob.cpp
|
||||
@@ -279,16 +279,17 @@ bool FileTransferJob::makeDir(const FilePath& srcPath, GFileInfoPtr srcInfo, Fil
|
||||
mode, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
|
||||
cancellable().get(), &err);
|
||||
if(!chmod_done) {
|
||||
- ErrorAction act = emitError(err, ErrorSeverity::MODERATE);
|
||||
+ /* NOTE: Some filesystems may not support this. So, ignore errors for now. */
|
||||
+ break;
|
||||
+ /*ErrorAction act = emitError(err, ErrorSeverity::MODERATE);
|
||||
if(act != ErrorAction::RETRY) {
|
||||
break;
|
||||
- }
|
||||
- /* FIXME: some filesystems may not support this. */
|
||||
+ }*/
|
||||
}
|
||||
} while(!chmod_done && !isCancelled());
|
||||
}
|
||||
}
|
||||
- return mkdir_done && chmod_done;
|
||||
+ return mkdir_done/* && chmod_done*/;
|
||||
}
|
||||
|
||||
bool FileTransferJob::handleError(GErrorPtr &err, const FilePath &srcPath, const GFileInfoPtr &srcInfo, FilePath &destPath, int& flags) {
|
@ -1 +1,7 @@
|
||||
fix-metadata-for-trusting-executables.patch
|
||||
fix-smb-recursive-copy.patch
|
||||
fix-license-headers.patch
|
||||
dont-ignore-crea-del-sequences.patch
|
||||
workaround-glib-recursive-moving-error.patch
|
||||
workaround-missed-file-monitoring.patch
|
||||
fix-dnd-mtp.patch
|
||||
|
@ -0,0 +1,33 @@
|
||||
From 476dded99de11a57c64103b4610f0de3dbdbc769 Mon Sep 17 00:00:00 2001
|
||||
From: Tsu Jan <tsujan2000@gmail.com>
|
||||
Date: Mon, 22 Apr 2019 00:07:07 +0430
|
||||
Subject: [PATCH] Workaround for GLib's recursive moving error, e.g. with bound
|
||||
mounts
|
||||
|
||||
`g_file_move()` may not work recursively on the same filesystem, especially
|
||||
with bound mounts (to `/mnt`, for example) and give the `G_IO_ERROR_WOULD_RECURSE`
|
||||
error. This patch ignores the error and tries our `FileTransferJob::copyFile()`.
|
||||
|
||||
Closes https://github.com/lxqt/pcmanfm-qt/issues/943
|
||||
---
|
||||
src/core/filetransferjob.cpp | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/src/core/filetransferjob.cpp b/src/core/filetransferjob.cpp
|
||||
index c3d5851..32f0f89 100644
|
||||
--- a/src/core/filetransferjob.cpp
|
||||
+++ b/src/core/filetransferjob.cpp
|
||||
@@ -83,6 +83,13 @@ bool FileTransferJob::moveFileSameFs(const FilePath& srcPath, const GFileInfoPtr
|
||||
// do the file operation
|
||||
if(!g_file_move(srcPath.gfile().get(), destPath.gfile().get(), GFileCopyFlags(flags), cancellable().get(),
|
||||
nullptr, this, &err)) {
|
||||
+ // Specially with mounts bound to /mnt, g_file_move() may give the recursive error
|
||||
+ // and fail, in which case, we ignore the error and try copying and deleting.
|
||||
+ if(err.code() == G_IO_ERROR_WOULD_RECURSE) {
|
||||
+ if(auto parent = destPath.parent()) {
|
||||
+ return copyFile(srcPath, srcInfo, parent, destPath.baseName().get());
|
||||
+ }
|
||||
+ }
|
||||
retry = handleError(err, srcPath, srcInfo, destPath, flags);
|
||||
}
|
||||
else {
|
@ -0,0 +1,143 @@
|
||||
Description: Realod folder after transfer job if it lacks file monitoring
|
||||
Closes https://github.com/lxqt/pcmanfm-qt/issues/933 and closes
|
||||
https://github.com/lxqt/libfm-qt/issues/280. After a file transfer job is
|
||||
finished inside a directory, if it is the path of an open folder that lacks
|
||||
file monitoring, this patch reloads its corresponding folder. In this way, the
|
||||
lack of file monitoring is partially compensated for.
|
||||
Please note that this doesn't work with `search://` because the files inside
|
||||
`search://` don't belong to it. By covering file creation, renaming, moving
|
||||
from one shared folder to another and deleting after trying to move into Trash.
|
||||
|
||||
Last-Update: 2019-06-08
|
||||
|
||||
--- libfm-qt-0.14.1.orig/src/core/folder.cpp
|
||||
+++ libfm-qt-0.14.1/src/core/folder.cpp
|
||||
@@ -112,6 +112,20 @@ std::shared_ptr<Folder> Folder::fromPath
|
||||
return folder;
|
||||
}
|
||||
|
||||
+// static
|
||||
+// Checks if this is the path of a folder in use.
|
||||
+std::shared_ptr<Folder> Folder::findByPath(const FilePath& path) {
|
||||
+ std::lock_guard<std::mutex> lock{mutex_};
|
||||
+ auto it = cache_.find(path);
|
||||
+ if(it != cache_.end()) {
|
||||
+ auto folder = it->second.lock();
|
||||
+ if(folder) {
|
||||
+ return folder;
|
||||
+ }
|
||||
+ }
|
||||
+ return nullptr;
|
||||
+}
|
||||
+
|
||||
bool Folder::makeDirectory(const char* /*name*/, GError** /*error*/) {
|
||||
// TODO:
|
||||
// FIXME: what the API is used for in the original libfm C API?
|
||||
@@ -142,6 +156,10 @@ bool Folder::isEmpty() const {
|
||||
return files_.empty();
|
||||
}
|
||||
|
||||
+bool Folder::hasFileMonitor() const {
|
||||
+ return (dirMonitor_ != nullptr);
|
||||
+}
|
||||
+
|
||||
FileInfoList Folder::files() const {
|
||||
FileInfoList ret;
|
||||
ret.reserve(files_.size());
|
||||
--- libfm-qt-0.14.1.orig/src/core/folder.h
|
||||
+++ libfm-qt-0.14.1/src/core/folder.h
|
||||
@@ -56,6 +56,8 @@ public:
|
||||
|
||||
static std::shared_ptr<Folder> fromPath(const FilePath& path);
|
||||
|
||||
+ static std::shared_ptr<Folder> findByPath(const FilePath& path);
|
||||
+
|
||||
bool makeDirectory(const char* name, GError** error);
|
||||
|
||||
void queryFilesystemInfo();
|
||||
@@ -74,6 +76,8 @@ public:
|
||||
|
||||
bool isEmpty() const;
|
||||
|
||||
+ bool hasFileMonitor() const;
|
||||
+
|
||||
FileInfoList files() const;
|
||||
|
||||
const FilePath& path() const;
|
||||
--- libfm-qt-0.14.1.orig/src/fileoperation.cpp
|
||||
+++ libfm-qt-0.14.1/src/fileoperation.cpp
|
||||
@@ -298,6 +298,8 @@ void FileOperation::onJobFinish() {
|
||||
}
|
||||
Q_EMIT finished();
|
||||
|
||||
+ bool tryReload = true;
|
||||
+
|
||||
// special handling for trash job
|
||||
if(type_ == Trash && !job_->isCancelled()) {
|
||||
auto trashJob = static_cast<Fm::TrashJob*>(job_);
|
||||
@@ -313,6 +315,26 @@ void FileOperation::onJobFinish() {
|
||||
"Do you want to delete them instead?")) == QMessageBox::Yes) {
|
||||
deleteFiles(std::move(unsupportedFiles), false);
|
||||
}
|
||||
+ tryReload = false;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ // reload the containing folder if it is in use but does not have a file monitor
|
||||
+ if(tryReload) {
|
||||
+ if(!srcPaths_.empty() && (type_ == Trash || type_ == Delete || type_ == Move)) {
|
||||
+ auto parent_path = srcPaths_[0].parent();
|
||||
+ if(parent_path != destPath_) { // otherwise, it will be done below
|
||||
+ auto folder = Fm::Folder::findByPath(parent_path);
|
||||
+ if(folder && folder->isValid() && folder->isLoaded() && !folder->hasFileMonitor()) {
|
||||
+ folder->reload();
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ if(destPath_) {
|
||||
+ auto folder = Fm::Folder::findByPath(destPath_);
|
||||
+ if(folder && folder->isValid() && folder->isLoaded() && !folder->hasFileMonitor()) {
|
||||
+ folder->reload();
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
--- libfm-qt-0.14.1.orig/src/utilities.cpp
|
||||
+++ libfm-qt-0.14.1/src/utilities.cpp
|
||||
@@ -157,7 +157,8 @@ bool isCurrentPidClipboardData(const QMi
|
||||
}
|
||||
|
||||
bool changeFileName(const Fm::FilePath& filePath, const QString& newName, QWidget* parent, bool showMessage) {
|
||||
- auto dest = filePath.parent().child(newName.toLocal8Bit().constData());
|
||||
+ auto parent_path = filePath.parent();
|
||||
+ auto dest = parent_path.child(newName.toLocal8Bit().constData());
|
||||
Fm::GErrorPtr err;
|
||||
if(!g_file_move(filePath.gfile().get(), dest.gfile().get(),
|
||||
GFileCopyFlags(G_FILE_COPY_ALL_METADATA |
|
||||
@@ -170,6 +171,13 @@ bool changeFileName(const Fm::FilePath&
|
||||
}
|
||||
return false;
|
||||
}
|
||||
+
|
||||
+ // reload the containing folder if it is in use but does not have a file monitor
|
||||
+ auto folder = Fm::Folder::findByPath(parent_path);
|
||||
+ if(folder && folder->isValid() && folder->isLoaded() && !folder->hasFileMonitor()) {
|
||||
+ folder->reload();
|
||||
+ }
|
||||
+
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -263,6 +271,12 @@ _retry:
|
||||
|
||||
QMessageBox::critical(parent ? parent->window() : nullptr, QObject::tr("Error"), err.message());
|
||||
}
|
||||
+ else { // reload the containing folder if it is in use but does not have a file monitor
|
||||
+ auto folder = Fm::Folder::findByPath(parentDir);
|
||||
+ if(folder && folder->isValid() && folder->isLoaded() && !folder->hasFileMonitor()) {
|
||||
+ folder->reload();
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
uid_t uidFromName(QString name) {
|
@ -1,12 +0,0 @@
|
||||
# For more information on what jobs are run see:
|
||||
# https://salsa.debian.org/salsa-ci-team/pipeline
|
||||
#
|
||||
# To enable the jobs, go to your repository (at salsa.debian.org)
|
||||
# and click over Settings > CI/CD > Expand (in General pipelines).
|
||||
# In "Custom CI config path" write debian/salsa-ci.yml and click
|
||||
# in "Save Changes". The CI tests will run after the next commit.
|
||||
---
|
||||
include:
|
||||
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
|
||||
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml
|
||||
|
@ -1,5 +0,0 @@
|
||||
# This list will always be very long, it's okay
|
||||
libfm-qt source: very-long-line-length-in-source-file * > 512 [data/archivers.list:*]
|
||||
|
||||
# Long lines in the upstream changelog are okay
|
||||
libfm-qt source: very-long-line-length-in-source-file * > 512 [CHANGELOG:*]
|
@ -1,52 +1,50 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
sw==
|
||||
=gSIv
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
=h7ww
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
@ -1,5 +1,3 @@
|
||||
version=4
|
||||
opts="searchmode=plain, \
|
||||
pgpsigurlmangle=s/$/.asc/, \
|
||||
uversionmangle=s/(\d+\.\d+\.\d+).*/$1/" \
|
||||
https://api.github.com/repos/lxqt/@PACKAGE@/releases https:\/\/github.com\/lxqt\/@PACKAGE@\/releases\/download\/@ANY_VERSION@\/@PACKAGE@-@ANY_VERSION@.tar.xz
|
||||
opts="pgpsigurlmangle=s/$/.asc/" \
|
||||
https://github.com/lxqt/libfm-qt/releases .*/libfm-qt-([\d\.]+).tar.xz
|
||||
|
Loading…
Reference in new issue