Compare commits
100 Commits
ubuntu/eoa
...
ubuntu/plu
Author | SHA1 | Date |
---|---|---|
Simon Quigley | c3075b3182 | 1 month ago |
Simon Quigley | a90ab52cb3 | 2 months ago |
Simon Quigley | a7c55cca9d | 2 months ago |
Simon Quigley | 49541811db | 2 months ago |
Rik Mills | 017f7c8a4d | 2 months ago |
Aaron Rainbolt | b26925ea07 | 4 months ago |
Aaron Rainbolt | 802f5579bb | 4 months ago |
Aaron Rainbolt | 0f9f5df868 | 6 months ago |
Aaron Rainbolt | 1db48c93b7 | 6 months ago |
Aaron Rainbolt | 644c99327e | 6 months ago |
Aaron Rainbolt | ea95d92cfa | 6 months ago |
Aaron Rainbolt | 2c7d5a99f5 | 6 months ago |
Aaron Rainbolt | b2307df376 | 6 months ago |
Aaron Rainbolt | d327b18479 | 1 year ago |
Aaron Rainbolt | c5f0c347e1 | 1 year ago |
Aaron Rainbolt | fa8e6fa423 | 1 year ago |
Aaron Rainbolt | d5ecfb6681 | 1 year ago |
Aaron Rainbolt | 6dab1b3af8 | 1 year ago |
Aaron Rainbolt | b2487aad6c | 1 year ago |
Simon Quigley | a575de56f8 | 1 year ago |
Simon Quigley | c3f4fc8b10 | 1 year ago |
Simon Quigley | 40e11089cc | 1 year ago |
Simon Quigley | 98f5f397dc | 1 year ago |
Aaron Rainbolt | d0c06c5d6b | 2 years ago |
Aaron Rainbolt | 052a556bc0 | 2 years ago |
Aaron Rainbolt | 83c034bd6f | 2 years ago |
Aaron Rainbolt | 900d477f1d | 2 years ago |
Aaron Rainbolt | e251a6aa32 | 2 years ago |
Aaron Rainbolt | a273e1567d | 2 years ago |
Aaron Rainbolt | eb615c3512 | 2 years ago |
Aaron Rainbolt | 0672e46c73 | 2 years ago |
Aaron Rainbolt | cbe58deaea | 2 years ago |
Aaron Rainbolt | f0df77303e | 2 years ago |
Simon Quigley | d6371bc277 | 2 years ago |
Simon Quigley | 5fd9107a93 | 2 years ago |
Simon Quigley | f10ba18860 | 2 years ago |
Simon Quigley | 1e0ecbdf79 | 2 years ago |
Simon Quigley | c98bcd1948 | 2 years ago |
Simon Quigley | 1fa81fcbb4 | 2 years ago |
Simon Quigley | 2602979b29 | 2 years ago |
Simon Quigley | 0f65b41150 | 2 years ago |
Simon Quigley | be07f15a59 | 2 years ago |
Simon Quigley | 0a196e7e16 | 2 years ago |
Simon Quigley | 944ca043e5 | 2 years ago |
Simon Quigley | b6b785512d | 2 years ago |
Simon Quigley | 0db4d62f51 | 2 years ago |
Simon Quigley | 6a7fd542a9 | 3 years ago |
Simon Quigley | 1cb774dd2e | 3 years ago |
Simon Quigley | 9f419a4e10 | 3 years ago |
Simon Quigley | 84bf4caa68 | 3 years ago |
Simon Quigley | c5631d7a2d | 3 years ago |
Simon Quigley | 8654c7904b | 3 years ago |
Simon Quigley | ce2f4feab5 | 3 years ago |
Simon Quigley | 755cf858f6 | 3 years ago |
Simon Quigley | 32558ac832 | 3 years ago |
Simon Quigley | 817faa5457 | 3 years ago |
Simon Quigley | f4f7453d4f | 3 years ago |
Simon Quigley | dbe70dd76e | 3 years ago |
Simon Quigley | 1bb5e074ae | 3 years ago |
Simon Quigley | 1c098568f3 | 3 years ago |
Simon Quigley | 0888e2bed8 | 3 years ago |
Simon Quigley | fa135f8e2a | 3 years ago |
Simon Quigley | 5eca821f28 | 3 years ago |
Dmitry Shachnev | 748c733729 | 3 years ago |
Dmitry Shachnev | f1cccbe4e1 | 3 years ago |
apt-ghetto | 8e2977cd88 | 3 years ago |
Raman Sarda | 24b035552e | 4 years ago |
Raman Sarda | 1215d360d8 | 4 years ago |
Simon Quigley | c448ea0a2f | 5 years ago |
Gianfranco Costamagna | 19d5b222af | 5 years ago |
Simon Quigley | a56d40dc0a | 5 years ago |
Simon Quigley | 70bbac5c92 | 5 years ago |
Simon Quigley | 54b50f5152 | 5 years ago |
Simon Quigley | f742be6a17 | 5 years ago |
Simon Quigley | ac41f3a96b | 5 years ago |
Simon Quigley | a084e5bb86 | 5 years ago |
Simon Quigley | c1ffd9db39 | 5 years ago |
Simon Quigley | 251d898efc | 5 years ago |
Rik Mills | b671b41618 | 5 years ago |
Rik Mills | 6df0173c9b | 5 years ago |
Simon Quigley | 370ce0986a | 5 years ago |
Simon Quigley | ff3efabd56 | 5 years ago |
Simon Quigley | 897e1d1d5f | 5 years ago |
Simon Quigley | b3e9f2e54d | 5 years ago |
Simon Quigley | c4a6bb316b | 5 years ago |
Simon Quigley | ea2f48482a | 5 years ago |
Simon Quigley | d1c409451e | 5 years ago |
Rik Mills | b75411bb14 | 5 years ago |
apt-ghetto | bc3e4bc2b2 | 5 years ago |
apt-ghetto | 4d37efb21b | 5 years ago |
Rik Mills | e8e7d9bd5a | 5 years ago |
apt-ghetto | ba535b4af8 | 5 years ago |
apt-ghetto | 53e5a55691 | 5 years ago |
apt-ghetto | 89d37d65c4 | 6 years ago |
apt-ghetto | 5e3b197f0d | 6 years ago |
apt-ghetto | bdd05e9657 | 6 years ago |
apt-ghetto | cd3ad840e2 | 6 years ago |
apt-ghetto | ac1face24d | 6 years ago |
Rik Mills | 9e81f0eb04 | 6 years ago |
apt-ghetto | 5d2a1fd479 | 6 years ago |
@ -0,0 +1,6 @@
|
|||||||
|
[DEFAULT]
|
||||||
|
debian-branch = debian/sid
|
||||||
|
upstream-branch = upstream/latest
|
||||||
|
pristine-tar = True
|
||||||
|
compression = xz
|
||||||
|
|
@ -1,10 +0,0 @@
|
|||||||
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
|
|
@ -1 +0,0 @@
|
|||||||
usr/share/libfm-qt/translations
|
|
@ -0,0 +1 @@
|
|||||||
|
usr/lib/*/*.so.*
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,3 @@
|
|||||||
|
usr/share/libfm-qt6/archivers.list
|
||||||
|
usr/share/libfm-qt6/terminals.list
|
||||||
|
usr/share/mime/packages/libfm-qt6-mimetypes.xml
|
@ -0,0 +1,8 @@
|
|||||||
|
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
|
@ -0,0 +1 @@
|
|||||||
|
usr/share/libfm-qt6/translations
|
@ -1,4 +0,0 @@
|
|||||||
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
@ -1,115 +0,0 @@
|
|||||||
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 {
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
|||||||
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);
|
|
||||||
|
|
@ -1,97 +0,0 @@
|
|||||||
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
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
|||||||
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,33 +0,0 @@
|
|||||||
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 {
|
|
@ -1,143 +0,0 @@
|
|||||||
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) {
|
|
@ -0,0 +1,12 @@
|
|||||||
|
# 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
|
||||||
|
|
@ -0,0 +1,5 @@
|
|||||||
|
# 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,50 +1,52 @@
|
|||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
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
|
||||||
=h7ww
|
NLJtd3SsRjc7ICtGdCvej59IvCDTjxtkhx5okF03APi1aXpHQrE18/arFD7BpoGO
|
||||||
|
sw==
|
||||||
|
=gSIv
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
version=4
|
version=4
|
||||||
opts="pgpsigurlmangle=s/$/.asc/" \
|
opts="searchmode=plain, \
|
||||||
https://github.com/lxqt/libfm-qt/releases .*/libfm-qt-([\d\.]+).tar.xz
|
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
|
||||||
|
Loading…
Reference in new issue