Merge branch 'ci/stable' into ci/unstable

ubuntu/groovy
Simon Quigley 5 years ago
commit d1c409451e

57
debian/changelog vendored

@ -1,4 +1,4 @@
libfm-qt (0.14.1-9ubuntu2) focal; urgency=medium libfm-qt (0.14.1-12ubuntu2) focal; urgency=medium
* Remove patches applied upstream: * Remove patches applied upstream:
- Remove dont-ignore-crea-del-sequences.patch - Remove dont-ignore-crea-del-sequences.patch
@ -10,6 +10,61 @@ libfm-qt (0.14.1-9ubuntu2) focal; urgency=medium
-- apt-ghetto <apt-ghetto@lubuntu.me> Fri, 06 Dec 2019 20:19:18 +0100 -- apt-ghetto <apt-ghetto@lubuntu.me> Fri, 06 Dec 2019 20:19:18 +0100
libfm-qt (0.14.1-12ubuntu1) focal; urgency=medium
* Merge from Debian unstable. Remaining changes:
- debian/control:
+ Update Vcs-* and maintainer for maintaining by Lubuntu.
+ Additional Breaks/Replaces on old libfm-qt-l10n.
- debian/libfmqt-qt6.symbols
+ Retain Lubuntu generated symbols file.
- debian/patches: fix-metadata-for-trusting-executables.patch
+ Fix metadata for trusting executables. Use Ubuntu standard for
trusting executables.
- debian/patches: fix-dnd-mtp.patch
+ Fix drag-and-drop from mtp:// mounted folders.
-- Rik Mills <rikmills@kde.org> Sat, 01 Feb 2020 09:48:17 +0000
libfm-qt (0.14.1-12) unstable; urgency=medium
* Fixed symbol QRegEx -> QRegularExpression
-- Alf Gaida <agaida@siduction.org> Tue, 22 Oct 2019 23:52:39 +0200
libfm-qt (0.14.1-11) unstable; urgency=medium
* Bumped Standards to 4.4.1, no changes needed
* Switched to gbp, gbp.conf added
-- Alf Gaida <agaida@siduction.org> Sat, 05 Oct 2019 12:56:09 +0200
libfm-qt (0.14.1-10) unstable; urgency=medium
* Fixed symbols for gcc 9.2.1 (Closes: #925742)
* Bumped Standards to 4.4.0, no changes needed
-- Alf Gaida <agaida@siduction.org> Sat, 17 Aug 2019 13:00:08 +0200
libfm-qt (0.14.1-9ubuntu4) focal; urgency=medium
* No-change rebuild against qtbase-abi-5-12-5.
-- Rik Mills <rikmills@kde.org> Sun, 27 Oct 2019 06:29:34 +0000
libfm-qt (0.14.1-9ubuntu3) eoan; urgency=medium
* Fixed DND not working for mtp:// mounted folders
-- Raman Sarda <theloudspeaker@lubuntu.me> Sat, 17 Aug 2019 10:11:52 +0530
libfm-qt (0.14.1-9ubuntu2) eoan; urgency=medium
* Rebuild against Qt 5.12.4.
* Update symbols files from the current build logs.
-- Dmitry Shachnev <mitya57@ubuntu.com> Fri, 12 Jul 2019 23:28:09 +0300
libfm-qt (0.14.1-9ubuntu1) eoan; urgency=medium libfm-qt (0.14.1-9ubuntu1) eoan; urgency=medium
* Merge from Debian unstable. Remaining changes: * Merge from Debian unstable. Remaining changes:

6
debian/gbp.conf vendored

@ -0,0 +1,6 @@
[DEFAULT]
debian-branch = debian/sid
upstream-branch = upstream/latest
pristine-tar = True
compression = xz

@ -1130,6 +1130,8 @@ libfm-qt.so.6 libfm-qt6 #MINVER#
(c++)"Fm::uidFromName(QString)@Base" 0.10.0 (c++)"Fm::uidFromName(QString)@Base" 0.10.0
(c++)"Fm::uidToName(unsigned int)@Base" 0.10.0 (c++)"Fm::uidToName(unsigned int)@Base" 0.10.0
(c++)"Fm::uriExists(char const*)@Base" 0.10.0 (c++)"Fm::uriExists(char const*)@Base" 0.10.0
_ZN2Fm6Folder10findByPathERKNS_8FilePathE@Base 0.14.1
_ZNK2Fm6Folder14hasFileMonitorEv@Base 0.14.1
(optional=templinst)_ZNSt6vectorI18QRegularExpressionSaIS0_EE17_M_realloc_insertIJS0_EEEvN9__gnu_cxx17__normal_iteratorIPS0_S2_EEDpOT_@Base 0.14.1 (optional=templinst)_ZNSt6vectorI18QRegularExpressionSaIS0_EE17_M_realloc_insertIJS0_EEEvN9__gnu_cxx17__normal_iteratorIPS0_S2_EEDpOT_@Base 0.14.1
createFileDialogHelper@Base 0.13.2~ createFileDialogHelper@Base 0.13.2~
fm_config@Base 0.13.1~ fm_config@Base 0.13.1~
@ -1309,6 +1311,7 @@ libfm-qt.so.6 libfm-qt6 #MINVER#
(optional|c++|arch= !amd64 !arm64 !armel !armhf !i386 !mips !mipsel !ppc64el !s390x !alpha !hppa !kfreebsd-amd64 !kfreebsd-i386 !m68k !powerpc !ppc64 !sh4 !x32 )"std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > __gnu_cxx::__to_xstring<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char>(int (*)(char*, unsigned long, char const*, void*), unsigned long, char const*, ...)@Base" 0.12.0 (optional|c++|arch= !amd64 !arm64 !armel !armhf !i386 !mips !mipsel !ppc64el !s390x !alpha !hppa !kfreebsd-amd64 !kfreebsd-i386 !m68k !powerpc !ppc64 !sh4 !x32 )"std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > __gnu_cxx::__to_xstring<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char>(int (*)(char*, unsigned long, char const*, void*), unsigned long, char const*, ...)@Base" 0.12.0
(c++)"std::__detail::_Map_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<Fm::FileInfo const> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<Fm::FileInfo const> > >, std::__detail::_Select1st, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const>, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true>, true>::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&&)@Base" 0.13.2~ (c++)"std::__detail::_Map_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<Fm::FileInfo const> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<Fm::FileInfo const> > >, std::__detail::_Select1st, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const>, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true>, true>::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&&)@Base" 0.13.2~
(c++)"std::__detail::_Map_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Fm::FileInfoList>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Fm::FileInfoList> >, std::__detail::_Select1st, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true>, true>::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)@Base" 0.12.1~ (c++)"std::__detail::_Map_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Fm::FileInfoList>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Fm::FileInfoList> >, std::__detail::_Select1st, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true>, true>::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)@Base" 0.12.1~
(optional=templinst|c++)"std::pair<std::_Rb_tree_iterator<unsigned int>, bool> std::_Rb_tree<unsigned int, unsigned int, std::_Identity<unsigned int>, std::less<unsigned int>, std::allocator<unsigned int> >::_M_insert_unique<unsigned int>(unsigned int&&)@Base" 0.14.1
(c++)"std::unique_ptr<Fm::LibFmQt, std::default_delete<Fm::LibFmQt> >::~unique_ptr()@Base" 0.13.2~ (c++)"std::unique_ptr<Fm::LibFmQt, std::default_delete<Fm::LibFmQt> >::~unique_ptr()@Base" 0.13.2~
(c++)"std::vector<Fm::BrowseHistoryItem, std::allocator<Fm::BrowseHistoryItem> >::_M_erase(__gnu_cxx::__normal_iterator<Fm::BrowseHistoryItem*, std::vector<Fm::BrowseHistoryItem, std::allocator<Fm::BrowseHistoryItem> > >)@Base" 0.12.0 (c++)"std::vector<Fm::BrowseHistoryItem, std::allocator<Fm::BrowseHistoryItem> >::_M_erase(__gnu_cxx::__normal_iterator<Fm::BrowseHistoryItem*, std::vector<Fm::BrowseHistoryItem, std::allocator<Fm::BrowseHistoryItem> > >)@Base" 0.12.0
(optional|c++|arch= !i386 )"std::vector<Fm::DirTreeModelItem*, std::allocator<Fm::DirTreeModelItem*> >::_M_erase(__gnu_cxx::__normal_iterator<Fm::DirTreeModelItem**, std::vector<Fm::DirTreeModelItem*, std::allocator<Fm::DirTreeModelItem*> > >)@Base" 0.13.2~ (optional|c++|arch= !i386 )"std::vector<Fm::DirTreeModelItem*, std::allocator<Fm::DirTreeModelItem*> >::_M_erase(__gnu_cxx::__normal_iterator<Fm::DirTreeModelItem**, std::vector<Fm::DirTreeModelItem*, std::allocator<Fm::DirTreeModelItem*> > >)@Base" 0.13.2~

@ -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,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) {
Loading…
Cancel
Save