Compare commits

..

No commits in common. 'ubuntu/plucky' and 'ubuntu/cosmic' have entirely different histories.

340
debian/changelog vendored

@ -1,338 +1,50 @@
libfm-qt (2.1.0-0ubuntu5) plucky; urgency=medium
libfm-qt (0.13.1-5ubuntu7) cosmic; urgency=medium
* Update symbols from build logs.
-- Simon Quigley <tsimonq2@ubuntu.com> Fri, 03 Jan 2025 05:34:28 -0600
libfm-qt (2.1.0-0ubuntu4) plucky; urgency=medium
* No-change rebuild for lxqt-build-tools C++17 -> C++20.
-- Simon Quigley <tsimonq2@ubuntu.com> Fri, 03 Jan 2025 03:53:09 -0600
libfm-qt (2.1.0-0ubuntu3) plucky; urgency=medium
* No-change rebuild for Qt 6.8.1.
-- Simon Quigley <tsimonq2@ubuntu.com> Wed, 04 Dec 2024 14:32:17 -0600
libfm-qt (2.1.0-0ubuntu2) plucky; urgency=medium
* No-change rebuild for Qt 6.8.0.
-- Simon Quigley <tsimonq2@ubuntu.com> Wed, 04 Dec 2024 14:32:17 -0600
libfm-qt (2.1.0-0ubuntu1) plucky; urgency=medium
* New upstream release.
- Bump build dependencies.
- Update symbols from amd64 build logs.
* Add new build dependencies from the CMake output.
* Make the package Lintian-clean.
-- Simon Quigley <tsimonq2@ubuntu.com> Fri, 15 Nov 2024 15:31:59 -0600
libfm-qt (2.0.2-0ubuntu3) plucky; urgency=medium
* Check (and set) metadata::trusted instead of metadata::trust.
* No-change rebuild against Qt 6.7.2 private-abi.
-- Simon Quigley <tsimonq2@ubuntu.com> Mon, 15 Oct 2018 10:11:59 -0500
-- Rik Mills <rikmills@kde.org> Thu, 17 Oct 2024 17:52:48 +0100
libfm-qt (2.0.2-0ubuntu2) oracular; urgency=medium
* Fix symbols file.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Sun, 25 Aug 2024 22:22:47 -0500
libfm-qt (2.0.2-0ubuntu1) oracular; urgency=medium
* New upstream release.
* Bump Standards-Version to 4.7.0, no changes necessary.
* Update copyright file.
* Bump build deps.
* Change binary package name to libfm-qt6.
* Update symbols file.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Thu, 15 Aug 2024 16:06:46 -0500
libfm-qt (1.4.0-0ubuntu1) noble; urgency=medium
* New upstream release.
* Reorganized and fixed copyright file.
* Added lxqt-menu-data as a build dependency.
* Bumped soname to libfm-qt14.
* Updated symbols file.
-- Aaron Rainbolt <arraybolt3@gmail.com> Sun, 05 Nov 2023 17:15:40 -0600
libfm-qt (1.3.0-0ubuntu2) mantic; urgency=medium
libfm-qt (0.13.1-5ubuntu6) cosmic; urgency=medium
* Update symbols from build logs.
-- Simon Quigley <tsimonq2@ubuntu.com> Fri, 11 Aug 2023 10:16:27 -0500
libfm-qt (1.3.0-0ubuntu1) mantic; urgency=medium
* New upstream release.
- Bump build dependency accordingly.
* Rename binary package for SONAME change, update symbols accordingly.
-- Simon Quigley <tsimonq2@ubuntu.com> Wed, 26 Jul 2023 16:25:53 -0500
libfm-qt (1.2.1-0ubuntu1) lunar; urgency=medium
* New upstream release.
* Updated copyright file.
* Bumped Standards-Version to 4.6.2, no changes necessary.
* Updated symbols file.
* Ran wrap-and-sort.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Thu, 26 Jan 2023 20:18:59 -0600
libfm-qt (1.2.0-0ubuntu3) lunar; urgency=medium
* No-change rebuild against Qt 5.15.8.
-- Dmitry Shachnev <mitya57@ubuntu.com> Sat, 14 Jan 2023 10:19:25 +0300
libfm-qt (1.2.0-0ubuntu2) lunar; urgency=medium
* No-change rebuild against Qt 5.15.7.
-- Dmitry Shachnev <mitya57@ubuntu.com> Sat, 10 Dec 2022 12:50:58 +0300
libfm-qt (1.2.0-0ubuntu1) lunar; urgency=medium
* New upstream release.
* Fix the watch file, for real this time.
* Lubuntuify the package slightly, to make debhelper happy.
* Remove reverse-applicable upstream patches.
* Bump build dependencies to the latest upstream LXQt versions.
* Rename libfm-qt11 -> libfm-qt12 and add necessary Breaks/Replaces.
* Update symbols from amd64 build logs.
-- Simon Quigley <tsimonq2@ubuntu.com> Wed, 16 Nov 2022 19:21:46 -0600
libfm-qt (1.1.0-3ubuntu1) kinetic; urgency=medium
* Revert the previous upload.
* Make Breaks/Replaces stricter for libfm-qt11 on libfm-qt-common due to the
nature of the reverted upload.
-- Simon Quigley <tsimonq2@ubuntu.com> Mon, 10 Oct 2022 11:06:03 -0500
libfm-qt (1.1.0-2ubuntu1) kinetic; urgency=medium
* Update debian/libfm-qt11.symbols for GCC 12.
-- Dmitry Shachnev <mitya57@ubuntu.com> Sat, 13 Aug 2022 21:37:11 +0300
libfm-qt (1.1.0-2) experimental; urgency=medium
* Upstreamed compatible changes from Ubuntu, modifying the following files:
- control
- copyright
- libfm-qt11.symbols
- libfm-qt-common.install
- libfm-qt-dev.install
- rules
- upstream/*
- patches directory
-- Aaron Rainbolt <arraybolt3@gmail.com> Thu, 14 Jul 2022 15:45:41 -0500
libfm-qt (1.1.0-1) experimental; urgency=medium
* debian/changelog: fix a typo.
* New upstream version 1.0.0
* Add debian/salsa-ci.yml file.
* Update debian/upstream/signing-key.asc.
* New upstream version 1.1.0
* debian/control: build-deps on lxqt-build-tools (>=0.11.0~).
* Bump to libfm-qt11 to match soname changes.
* debian/libfm-qt11.shlibs: Added, restrict to latest upstream version.
* Drop C++ symbols according to
https://wiki.debian.org/UsingSymbolsFiles.
-- Andrew Lee (李健秋) <ajqlee@debian.org> Tue, 12 Jul 2022 22:33:35 +0800
libfm-qt (0.16.0-3) unstable; urgency=high
* Update symbols for armel, armhf, i386, mipsel and s390x to fix FTBFS.
-- Andrew Lee (李健秋) <ajqlee@debian.org> Sat, 09 Jan 2021 03:15:46 +0800
-- Simon Quigley <tsimonq2@ubuntu.com> Tue, 09 Oct 2018 13:57:26 -0500
libfm-qt (0.16.0-2) unstable; urgency=medium
libfm-qt (0.13.1-5ubuntu5) cosmic; urgency=medium
* Source only upload.
* Support adding metadata for trusting executables (LP: #1795537).
-- Andrew Lee (李健秋) <ajqlee@debian.org> Wed, 06 Jan 2021 21:31:49 +0800
-- Walter Lapchynski <wxl@ubuntu.com> Sat, 06 Oct 2018 08:55:46 -0700
libfm-qt (0.16.0-1) unstable; urgency=medium
libfm-qt (0.13.1-5ubuntu4) cosmic; urgency=medium
* New upstream release. (Closes: #978219)
* Drop fixed upstream patches.
* Bump to libfm-qt8 to match soname changes.
* Refresh debian/libfm-qt8.symbols file.
* Change Uploaders to Ubuntu uploaders.
* Change the debhelper dependency to 11.
* Move in the file dialog from lxqt-qtplugin for better platform
integration.
-- Andrew Lee (李健秋) <ajqlee@debian.org> Wed, 06 Jan 2021 04:30:38 +0800
-- Simon Quigley <tsimonq2@ubuntu.com> Mon, 30 Jul 2018 19:25:14 -0500
libfm-qt (0.14.1-12.2) unstable; urgency=medium
libfm-qt (0.13.1-5ubuntu3) cosmic; urgency=medium
* Non-maintainer upload.
* Update symbols files from buildds logs to fix FTBFS on armel.
-- Dmitry Shachnev <mitya57@debian.org> Fri, 23 Oct 2020 20:28:57 +0300
libfm-qt (0.14.1-12.1) unstable; urgency=medium
* Non-maintainer upload.
* Update symbols files for GCC 10 (closes: #957436).
-- Dmitry Shachnev <mitya57@debian.org> Sat, 17 Oct 2020 20:11:39 +0300
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-9) unstable; urgency=medium
* Added upstream patch workaround-missed-file-monitoring.patch
(Closes: #926803)
* Added two new symbols - internal use only
-- Alf Gaida <agaida@siduction.org> Sat, 08 Jun 2019 16:39:11 +0200
libfm-qt (0.14.1-8) unstable; urgency=medium
* Removed the wrongly introduced build dependency on lxqt-qtplugin
-- Alf Gaida <agaida@siduction.org> Sat, 27 Apr 2019 18:40:25 +0200
libfm-qt (0.14.1-7) unstable; urgency=medium
* Workaround for GLib's recursive moving error (Closes: #927708)
-- Alf Gaida <agaida@siduction.org> Sat, 27 Apr 2019 10:50:16 +0200
libfm-qt (0.14.1-6) unstable; urgency=medium
* Fixed ignored creation-deletion sequences (Closes: #927707)
-- Alf Gaida <agaida@siduction.org> Sun, 21 Apr 2019 20:50:23 +0200
libfm-qt (0.14.1-5) unstable; urgency=medium
* Fixed license for vfs-search.c and vfs-menu.c - was forgotten upstream.
* Fixed d/copyright that way.
-- Alf Gaida <agaida@siduction.org> Thu, 18 Apr 2019 20:52:30 +0200
libfm-qt (0.14.1-4) unstable; urgency=medium
* Fix recursive copy to smb shares (and possible other remote filesystems)
(Closes: #926626)
-- Alf Gaida <agaida@siduction.org> Mon, 08 Apr 2019 19:03:43 +0200
libfm-qt (0.14.1-3) unstable; urgency=medium
* Fixed the remaining symbols
-- Alf Gaida <agaida@siduction.org> Fri, 01 Mar 2019 01:34:43 +0100
libfm-qt (0.14.1-2) unstable; urgency=medium
* Fixed new and optional symbols
-- Alf Gaida <agaida@siduction.org> Tue, 26 Feb 2019 22:07:40 +0100
libfm-qt (0.14.1-1) unstable; urgency=medium
* Cherry-picking upstream release 0.14.1.
* Fixed some symbols
-- Alf Gaida <agaida@siduction.org> Sun, 24 Feb 2019 19:31:01 +0100
libfm-qt (0.14.0-3) unstable; urgency=medium
* Switched to unstable
* Fixed some more symbols
* Ported back some upstream patches
-- Alf Gaida <agaida@siduction.org> Tue, 05 Feb 2019 20:11:09 +0100
libfm-qt (0.14.0-2) experimental; urgency=medium
* Fixed a bunch of symbols for misc. architectures.
-- Alf Gaida <agaida@siduction.org> Sat, 02 Feb 2019 17:46:02 +0100
libfm-qt (0.14.0-1) experimental; urgency=medium
* Cherry-picking upstream release 0.14.0.
* Switched to experimental
* Bumped Standards to 4.3.0, no changes needed
* Dropped d/compat, use debhelper-compat = 12, no changes needed
* Fixed years in d/copyright
* Bumped minimum version lxqt-build-tools (>= 0.6.0~)
* Removed obsolete PULL_TRANSLATIONS= OFF from dh_auto_configure
* Removed obsolete build dependency libfm-dev
* Added Build-Depends-Package field to symbols
* Added l10n-package, moved from lxqt-l10n
* Fixed symbols file for 0.14.0
* Added d/upstream/metadata
* Added new files do debian/copyright
-- Alf Gaida <agaida@siduction.org> Wed, 30 Jan 2019 20:32:59 +0100
libfm-qt (0.13.1-10) unstable; urgency=medium
* Added Build-Depends-Package: libfm-qt-dev to libfm-qt-dev.symbols
* Bumped Standards to 4.2.1
* Fixed the first symbols (Closes: #916158)
-- Alf Gaida <agaida@siduction.org> Fri, 28 Dec 2018 16:41:09 +0100
libfm-qt (0.13.1-9) unstable; urgency=medium
* Fixed armel and riscv symbols
-- Alf Gaida <agaida@siduction.org> Fri, 31 Aug 2018 19:35:35 +0200
libfm-qt (0.13.1-8) unstable; urgency=medium
* Fixed missed blank in symbols
* Update symbols from build logs.
-- Alf Gaida <agaida@siduction.org> Fri, 31 Aug 2018 00:51:51 +0200
-- Simon Quigley <tsimonq2@ubuntu.com> Wed, 18 Jul 2018 04:32:54 -0500
libfm-qt (0.13.1-7) unstable; urgency=medium
libfm-qt (0.13.1-5ubuntu2) cosmic; urgency=medium
* Fixed another bunch of symbols
* No-change rebuild against qtbase-abi-5-11-0.
-- Alf Gaida <agaida@siduction.org> Thu, 30 Aug 2018 22:36:25 +0200
-- Simon Quigley <tsimonq2@ubuntu.com> Wed, 18 Jul 2018 03:18:08 -0500
libfm-qt (0.13.1-6) unstable; urgency=medium
libfm-qt (0.13.1-5ubuntu1) cosmic; urgency=medium
* Fixed a bunch of symbols
* Update Vcs-* and maintainer for maintaining by Lubuntu.
* Add LXQt Archiver integration.
* Fix failure to open smb:// caused by incorrect file info handling.
* Use the window text color for the places pane.
-- Alf Gaida <agaida@siduction.org> Tue, 31 Jul 2018 18:15:12 +0200
-- Simon Quigley <tsimonq2@ubuntu.com> Sat, 14 Jul 2018 01:18:40 -0500
libfm-qt (0.13.1-5) unstable; urgency=medium

1
debian/compat vendored

@ -0,0 +1 @@
11

120
debian/control vendored

@ -1,72 +1,43 @@
Source: libfm-qt
Maintainer: Lubuntu Developers <lubuntu-devel@lists.ubuntu.com>
Original-Maintainer: LXQt Packaging Team <pkg-lxqt-devel@lists.alioth.debian.org>
Uploaders: Alf Gaida <agaida@siduction.org>,
ChangZhuo Chen (陳昌倬) <czchen@debian.org>,
Andrew Lee (李健秋) <ajqlee@debian.org>,
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>,
Simon Quigley <tsimonq2@debian.org>,
Aaron Rainbolt <arraybolt3@gmail.com>
XSBC-Original-Maintainer: LXQt Packaging Team <pkg-lxqt-devel@lists.alioth.debian.org>
Uploaders: Simon Quigley <tsimonq2@ubuntu.com>
Section: x11
Priority: optional
Build-Depends: debhelper-compat (= 13),
Build-Depends: debhelper (>= 11),
libexif-dev,
libfm-dev (>= 1.2.0),
libkf5windowsystem-dev,
libmenu-cache-dev,
libqt5svg5-dev,
libqt5x11extras5-dev,
libx11-dev,
libxcb-composite0-dev,
libxcb-cursor-dev,
libxcb-damage0-dev,
libxcb-dpms0-dev,
libxcb-dri2-0-dev,
libxcb-dri3-dev,
libxcb-ewmh-dev,
libxcb-glx0-dev,
libxcb-icccm4-dev,
libxcb-image0-dev,
libxcb-keysyms1-dev,
libxcb-present-dev,
libxcb-randr0-dev,
libxcb-record0-dev,
libxcb-render-util0-dev,
libxcb-render0-dev,
libxcb-res0-dev,
libxcb-screensaver0-dev,
libxcb-shape0-dev,
libxcb-shm0-dev,
libxcb-sync-dev,
libxcb-util-dev,
libxcb-xf86dri0-dev,
libxcb-xfixes0-dev,
libxcb-xinerama0-dev,
libxcb-xinput-dev,
libxcb-xkb-dev,
libxcb-xtest0-dev,
libxcb-xv0-dev,
libxcb-xvmc0-dev,
lxqt-build-tools (>= 2.1.0),
lxqt-menu-data (>= 2.1.0),
qt6-base-private-dev (>= 6.6.0),
qt6-svg-dev (>= 6.6.0)
Standards-Version: 4.7.0
Vcs-Browser: https://git.lubuntu.me/Lubuntu/libfm-qt-packaging
Vcs-Git: https://git.lubuntu.me/Lubuntu/libfm-qt-packaging.git
Debian-Vcs-Browser: https://salsa.debian.org/lxqt-team/libfm-qt
Debian-Vcs-Git: https://salsa.debian.org/lxqt-team/libfm-qt.git
lxqt-build-tools (>= 0.5.0~),
qtbase5-private-dev
Standards-Version: 4.1.5
Vcs-Browser: https://phab.lubuntu.me/source/libfm-qt/
Vcs-Git: https://phab.lubuntu.me/source/libfm-qt.git
XS-Debian-Vcs-Browser: https://salsa.debian.org/lxqt-team/libfm-qt
XS-Debian-Vcs-Git: https://salsa.debian.org/lxqt-team/libfm-qt.git
Homepage: https://github.com/lxqt/libfm-qt
Rules-Requires-Root: no
Package: libfm-qt6-15
Replaces: libfm-qt14, libfm-qt6-14
Breaks: libfm-qt14, libfm-qt6-14
Package: libfm-qt5
Provides: libfm-qt
Conflicts: libfm-qt
Replaces: libfm-qt5-2,
libfm-qt3,
libfm-qt2
Breaks: libfm-qt5-2,
libfm-qt3,
libfm-qt2
Architecture: any
Multi-Arch: same
Section: libs
Depends: libfm-qt6-common,
Depends: ${misc:Depends},
${shlibs:Depends},
libglib2.0-bin,
shared-mime-info,
${misc:Depends},
${shlibs:Depends}
Recommends: libfm-qt6-l10n
shared-mime-info
Recommends: libfm-qt-l10n
Pre-Depends: ${misc:Pre-Depends}
Description: file management support for pcmanfm-qt
Libfm-Qt is a companion library providing components to build desktop file
@ -74,39 +45,18 @@ Description: file management support for pcmanfm-qt
.
This package contains helper library libfm-qt for pcmanfm-qt.
Package: libfm-qt6-common
Architecture: all
Multi-Arch: foreign
Section: libs
Depends: ${misc:Depends}
Breaks: libfm-qt14
Replaces: libfm-qt14
Description: Common files for libfm-qt
Libfm-Qt is a companion library providing components to build desktop file
managers.
.
This package contains common files for libfm-qt.
Package: libfm-qt6-dev
Package: libfm-qt-dev
Replaces: libfm-qt5-dev
Breaks: libfm-qt5-dev
Architecture: any
Section: libdevel
Depends: libexif-dev,
libfm-qt6-15 (= ${binary:Version}),
libmenu-cache-dev,
${misc:Depends}
Depends: ${misc:Depends},
libexif-dev,
libfm-dev (>= 1.2.0),
libfm-qt5 (= ${binary:Version}),
libmenu-cache-dev
Description: file management support library for pcmanfm-qt (development files)
Libfm-Qt is a companion library providing components to build desktop file
managers.
.
This package contains development files for helper library libfm-qt.
Package: libfm-qt6-l10n
Architecture: all
Multi-Arch: foreign
Section: localization
Depends: qt6-translations-l10n, ${misc:Depends}
Description: Language package for libfm-qt
Libfm-Qt is a companion library providing components to build desktop file
managers.
.
This package contains the l10n files needed by the libfm-qt.

23
debian/copyright vendored

@ -3,13 +3,10 @@ Upstream-Name: libfm-qt
Source: https://github.com/lxqt/libfm-qt
Files: *
Copyright: 2013-2024 LXQt team
2009 Juergen Hoetzel <juergen@archlinux.org>
2010 Shae Smittle <starfall87@gmail.com>
Copyright: 2013-2018 LXQt team
2013-2017 Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
2012-2013 Andriy Grytsenko (LStranger) <andrej@rep.kiev.ua>
2014 Kuzma Shapran <kuzma.shapran@gmail.com>
2016 Mamoru TASAKA <mtasaka@fedoraproject.org>
2012-2016 Andriy Grytsenko (LStranger) <andrej@rep.kiev.ua>
2009-2019 Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
License: LGPL-2.1+
Files: cmake/fm-qt-config.cmake.in
@ -17,18 +14,10 @@ Copyright: 2015 Luís Pereira <luis.artur.pereira@gmail.com>
License: BSD-3-Clause
Files: debian/*
Copyright: 2015 Andrew Lee (李健秋) <ajqlee@debian.org>
2014-2015 Wen Liao <wen.cf83@gmail.com>
Copyright: 2014-2015 Wen Liao <wen.cf83@gmail.com>
2014-2016 ChangZhuo Chen (陳昌倬) <czchen@debian.org>
2019 Rik Mills <rikmills@kubuntu.org>
2013-2019 Alf Gaida <agaida@siduction.org>
2018-2019 Walter Lapchynski <wxl@ubuntu.com>
2018-2019 Dan Simmons <monetaryabyss@protonmail.com>
2020 Gianfranco Costamagna <locutusofborg@debian.org>
2019-2021 Raman Sarda <ramansarda2000@gmail.com>
2019-2021 apt-ghetto <apt-ghetto@protonmail.com>
2018-2023 Simon Quigley <tsimonq2@ubuntu.com>
2022-2024 Aaron Rainbolt <arraybolt3@gmail.com>
2013-2018 Alf Gaida <agaida@siduction.org>
2015 Andrew Lee (李健秋) <ajqlee@debian.org>
License: LGPL-2.1+
License: BSD-3-Clause

6
debian/gbp.conf vendored

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

@ -0,0 +1,7 @@
usr/include/libfm-qt/*.h
usr/include/libfm-qt/customactions/*.h
usr/include/libfm-qt/core/*.h
usr/lib/*/*.so
usr/lib/*/pkgconfig/*
usr/share/cmake/fm-qt/*.cmake

@ -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

@ -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,18 @@
Description: Add integration for LXQt Archiver
Author: "Hong Jen Yee (PCMan)" <pcman.tw@gmail.com>
Origin: upstream
Applied-Upstream: commit:9a3bf23
Last-Update: 2018-07-14
--- a/data/archivers.list
+++ b/data/archivers.list
@@ -1,3 +1,10 @@
+[lxqt-archiver]
+create=lxqt-archiver --add %U
+extract=lxqt-archiver --extract %U
+extract_to=lxqt-archiver --extract-to %d %U
+mime_types=application/x-7z-compressed;application/x-7z-compressed-tar;application/x-ace;application/x-alz;application/x-ar;application/x-arj;application/x-bzip;application/x-bzip-compressed-tar;application/x-bzip1;application/x-bzip1-compressed-tar;application/x-cabinet;application/x-cbr;application/x-cbz;application/x-cd-image;application/x-compress;application/x-compressed-tar;application/x-cpio;application/x-deb;application/x-ear;application/x-ms-dos-executable;application/x-gtar;application/x-gzip;application/x-gzpostscript;application/x-java-archive;application/x-lha;application/x-lhz;application/x-lzip;application/x-lzip-compressed-tar;application/x-lzma;application/x-lzma-compressed-tar;application/x-lzop;application/x-lzop-compressed-tar;application/x-rar;application/x-rar-compressed;application/vnd.rar;application/x-rpm;application/x-rzip;application/x-tar;application/x-tarz;application/x-stuffit;application/x-war;application/x-xz;application/x-xz-compressed-tar;application/x-zip;application/x-zip-compressed;application/x-zoo;application/zip;multipart/x-zip;
+supports_uris=true
+
[file-roller]
create=file-roller --add %U
extract=file-roller --extract %U

@ -0,0 +1,166 @@
Description: Support adding metadata for trusting executables.
Author: Tsu Jan <tsujan2000@gmail.com>
Applied-Upstream: https://github.com/lxqt/libfm-qt/pull/242/commits/9c2f00c2e22b8054bcaedad89ef74f0432b9f7fe
Last-Update: 2018-10-15
--- a/src/core/basicfilelauncher.cpp
+++ b/src/core/basicfilelauncher.cpp
@@ -176,7 +176,7 @@ bool BasicFileLauncher::launchDesktopEnt
const char* desktopEntryName = nullptr;
FilePathList shortcutTargetPaths;
if(fileInfo->isExecutableType()) {
- auto act = quickExec_ ? ExecAction::DIRECT_EXEC : askExecFile(fileInfo);
+ auto act = (quickExec_ || fileInfo->isTrustable()) ? ExecAction::DIRECT_EXEC : askExecFile(fileInfo);
switch(act) {
case ExecAction::EXEC_IN_TERMINAL:
case ExecAction::DIRECT_EXEC: {
@@ -275,7 +275,7 @@ bool BasicFileLauncher::launchExecutable
auto filename = fileInfo->path().localPath();
/* FIXME: we need to use eaccess/euidaccess here. */
if(g_file_test(filename.get(), G_FILE_TEST_IS_EXECUTABLE)) {
- auto act = quickExec_ ? ExecAction::DIRECT_EXEC : askExecFile(fileInfo);
+ auto act = (quickExec_ || fileInfo->isTrustable()) ? ExecAction::DIRECT_EXEC : askExecFile(fileInfo);
int flags = G_APP_INFO_CREATE_NONE;
switch(act) {
case ExecAction::EXEC_IN_TERMINAL:
--- a/src/core/fileinfo.cpp
+++ b/src/core/fileinfo.cpp
@@ -9,7 +9,8 @@ const char defaultGFileInfoQueryAttribs[
"time::*,"
"access::*,"
"id::filesystem,"
- "metadata::emblems";
+ "metadata::emblems,"
+ "metadata::trusted";
FileInfo::FileInfo() {
// FIXME: initialize numeric data members
@@ -23,6 +24,7 @@ FileInfo::~FileInfo() {
}
void FileInfo::setFromGFileInfo(const GObjectPtr<GFileInfo>& inf, const FilePath& parentDirPath) {
+ inf_ = inf;
dirPath_ = parentDirPath;
const char* tmp, *uri;
GIcon* gicon;
@@ -377,6 +379,37 @@ bool FileInfo::isExecutableType() const
return mimeType_->canBeExecutable();
}
+bool FileInfo::isTrustable() const {
+ if(isExecutableType()) {
+ /* to avoid GIO assertion warning: */
+ if(g_file_info_get_attribute_type(inf_.get(), "metadata::trusted") == G_FILE_ATTRIBUTE_TYPE_STRING) {
+ if(const auto data = g_file_info_get_attribute_string(inf_.get(), "metadata::trusted")) {
+ return (strcmp(data, "true") == 0);
+ }
+ }
+ }
+ return false;
+}
+
+void FileInfo::setTrustable(bool trust) const {
+ if(!isExecutableType()) {
+ return; // "metadata::trusted" is only for executables
+ }
+ GObjectPtr<GFileInfo> info {g_file_info_new()}; // used to set only this attribute
+ if(trust) {
+ g_file_info_set_attribute_string(info.get(), "metadata::trusted", "true");
+ g_file_info_set_attribute_string(inf_.get(), "metadata::trusted", "true");
+ }
+ else {
+ g_file_info_set_attribute(info.get(), "metadata::trusted", G_FILE_ATTRIBUTE_TYPE_INVALID, nullptr);
+ g_file_info_set_attribute(inf_.get(), "metadata::trusted", G_FILE_ATTRIBUTE_TYPE_INVALID, nullptr);
+ }
+ g_file_set_attributes_from_info(path().gfile().get(),
+ info.get(),
+ G_FILE_QUERY_INFO_NONE,
+ nullptr, nullptr);
+}
+
bool FileInfoList::isSameType() const {
if(!empty()) {
--- a/src/core/fileinfo.h
+++ b/src/core/fileinfo.h
@@ -214,7 +214,12 @@ public:
return emblems_;
}
+ bool isTrustable() const;
+
+ void setTrustable(bool trust) const;
+
private:
+ GObjectPtr<GFileInfo> inf_;
std::string name_;
QString dispName_;
--- a/src/filemenu.cpp
+++ b/src/filemenu.cpp
@@ -245,6 +245,18 @@ FileMenu::FileMenu(Fm::FileInfoList file
FileMenu::~FileMenu() {
}
+void FileMenu::addTrustAction() {
+ if(info_->isExecutableType() && (!fileLauncher_ || !fileLauncher_->quickExec())) {
+ QAction* trustAction = new QAction(files_.size() > 1
+ ? tr("Trust selected executables")
+ : tr("Trust this executable"),
+ this);
+ trustAction->setCheckable(true);
+ trustAction->setChecked(info_->isTrustable());
+ connect(trustAction, &QAction::toggled, this, &FileMenu::onTrustToggled);
+ insertAction(propertiesAction_, trustAction);
+ }
+}
void FileMenu::addCustomActionItem(QMenu* menu, std::shared_ptr<const FileActionItem> item) {
if(!item) { // separator
@@ -329,6 +341,12 @@ void FileMenu::onCustomActionTrigerred()
}
}
+void FileMenu::onTrustToggled(bool checked) {
+ for(auto& file: files_) {
+ file->setTrustable(checked);
+ }
+}
+
void FileMenu::onFilePropertiesTriggered() {
FilePropsDialog::showForFiles(files_);
}
--- a/src/filemenu.h
+++ b/src/filemenu.h
@@ -41,6 +41,8 @@ public:
explicit FileMenu(Fm::FileInfoList files, std::shared_ptr<const Fm::FileInfo> info, Fm::FilePath cwd, bool isWritableDir = true, const QString& title = QString(), QWidget* parent = nullptr);
~FileMenu();
+ void addTrustAction();
+
bool useTrash() {
return useTrash_;
}
@@ -162,6 +164,7 @@ protected:
protected Q_SLOTS:
void onOpenTriggered();
void onOpenWithTriggered();
+ void onTrustToggled(bool checked);
void onFilePropertiesTriggered();
void onApplicationTriggered();
void onCustomActionTrigerred();
--- a/src/folderview.cpp
+++ b/src/folderview.cpp
@@ -1318,11 +1318,11 @@ void FolderView::onFileClicked(int type,
// show context menu
auto files = selectedFiles();
if(!files.empty()) {
- QModelIndexList selIndexes = mode == DetailedListMode ? selectedRows() : selectedIndexes();
- Fm::FileMenu* fileMenu = (view && selIndexes.size() == 1)
+ Fm::FileMenu* fileMenu = (view && files.size() == 1)
? new Fm::FileMenu(files, fileInfo, folderPath, isWritableDir, QString(), view)
: new Fm::FileMenu(files, fileInfo, folderPath, isWritableDir);
fileMenu->setFileLauncher(fileLauncher_);
+ fileMenu->addTrustAction();
prepareFileMenu(fileMenu);
menu = fileMenu;
}

@ -0,0 +1,251 @@
Description: Fix failure to open smb:// caused by incorrect file info handling
Author: "Hong Jen Yee (PCMan)" <pcman.tw@gmail.com>
Origin: upstream
Applied-Upstream: commit:1a6fa26
Last-Update: 2018-07-14
--- a/src/core/basicfilelauncher.cpp
+++ b/src/core/basicfilelauncher.cpp
@@ -27,11 +27,13 @@ bool BasicFileLauncher::launchFiles(cons
FilePathList pathsToLaunch;
// classify files according to different mimetypes
for(auto& fileInfo : fileInfos) {
- // qDebug("path: %s, target: %s", fileInfo->path().toString().get(), fileInfo->target().c_str());
- if(fileInfo->isDir()) {
- folderInfos.emplace_back(fileInfo);
- }
- else if(fileInfo->isMountable()) {
+ /*
+ qDebug("path: %s, type: %s, target: %s, isDir: %i, isDesktopEntry: %i",
+ fileInfo->path().toString().get(), fileInfo->mimeType()->name(), fileInfo->target().c_str(),
+ fileInfo->isDir(), fileInfo->isDesktopEntry());
+ */
+
+ if(fileInfo->isMountable()) {
if(fileInfo->target().empty()) {
// the mountable is not yet mounted so we have no target URI.
GErrorPtr err{G_IO_ERROR, G_IO_ERROR_NOT_MOUNTED,
@@ -65,6 +67,9 @@ bool BasicFileLauncher::launchFiles(cons
pathsToLaunch.emplace_back(path);
}
}
+ else if(fileInfo->isDir()) {
+ folderInfos.emplace_back(fileInfo);
+ }
else {
auto& mimeType = fileInfo->mimeType();
mimeTypeToFiles[mimeType->name()].emplace_back(fileInfo);
@@ -101,16 +106,27 @@ bool BasicFileLauncher::launchFiles(cons
bool BasicFileLauncher::launchPaths(FilePathList paths, GAppLaunchContext* ctx) {
// FIXME: blocking with an event loop is not a good design :-(
QEventLoop eventLoop;
-
auto job = new FileInfoJob{paths};
job->setAutoDelete(false); // do not automatically delete the job since we want its results later.
GObjectPtr<GAppLaunchContext> ctxPtr{ctx};
+
+ // error handling (for example: handle path not mounted error)
+ QObject::connect(job, &FileInfoJob::error,
+ &eventLoop, [this, job, ctx](const GErrorPtr & err, Job::ErrorSeverity /* severity */ , Job::ErrorAction &act) {
+ auto path = job->currentPath();
+ if(showError(ctx, err, path, nullptr)) {
+ // the user handled the error and ask for retry
+ act = Job::ErrorAction::RETRY;
+ }
+ }, Qt::BlockingQueuedConnection); // BlockingQueuedConnection is required here to pause the job and wait for user response
+
QObject::connect(job, &FileInfoJob::finished,
[&eventLoop]() {
// exit the event loop when the job is done
eventLoop.exit();
});
+
// run the job in another thread to not block the UI
job->runAsync();
@@ -143,7 +159,7 @@ BasicFileLauncher::ExecAction BasicFileL
return ExecAction::DIRECT_EXEC;
}
-bool BasicFileLauncher::showError(GAppLaunchContext* /* ctx */, GErrorPtr& /* err */, const FilePath& /* path */, const FileInfoPtr& /* info */) {
+bool BasicFileLauncher::showError(GAppLaunchContext* /* ctx */, const GErrorPtr & /* err */, const FilePath& /* path */, const FileInfoPtr& /* info */) {
return false;
}
@@ -247,13 +263,21 @@ bool BasicFileLauncher::launchDesktopEnt
FilePath BasicFileLauncher::handleShortcut(const FileInfoPtr& fileInfo, GAppLaunchContext* ctx) {
auto target = fileInfo->target();
+
+ // if we know the target is a dir, we are not going to open it using other apps
+ // for example: `network:///smb-root' is a shortcut targeting `smb:///' and it's also a dir
+ if(fileInfo->isDir()) {
+ return FilePath::fromPathStr(target.c_str());
+ }
+
auto scheme = CStrPtr{g_uri_parse_scheme(target.c_str())};
if(scheme) {
// collect the uri schemes we support
if(strcmp(scheme.get(), "file") == 0
|| strcmp(scheme.get(), "trash") == 0
|| strcmp(scheme.get(), "network") == 0
- || strcmp(scheme.get(), "computer") == 0) {
+ || strcmp(scheme.get(), "computer") == 0
+ || strcmp(scheme.get(), "menu") == 0) {
return FilePath::fromUri(fileInfo->target().c_str());
}
else {
--- a/src/core/basicfilelauncher.h
+++ b/src/core/basicfilelauncher.h
@@ -53,7 +53,7 @@ protected:
virtual bool openFolder(GAppLaunchContext* ctx, const FileInfoList& folderInfos, GErrorPtr& err);
- virtual bool showError(GAppLaunchContext* ctx, GErrorPtr& err, const FilePath& path = FilePath{}, const FileInfoPtr& info = FileInfoPtr{});
+ virtual bool showError(GAppLaunchContext* ctx, const GErrorPtr& err, const FilePath& path = FilePath{}, const FileInfoPtr& info = FileInfoPtr{});
virtual ExecAction askExecFile(const FileInfoPtr& file);
--- a/src/core/fileinfo.cpp
+++ b/src/core/fileinfo.cpp
@@ -36,10 +36,9 @@ void FileInfo::setFromGFileInfo(const GO
size_ = g_file_info_get_size(inf.get());
tmp = g_file_info_get_content_type(inf.get());
- if(!tmp) {
- tmp = "application/octet-stream";
+ if(tmp) {
+ mimeType_ = MimeType::fromName(tmp);
}
- mimeType_ = MimeType::fromName(tmp);
mode_ = g_file_info_get_attribute_uint32(inf.get(), G_FILE_ATTRIBUTE_UNIX_MODE);
@@ -196,6 +195,10 @@ _file_is_symlink:
}
}
+ if(!mimeType_) {
+ mimeType_ = MimeType::fromName("application/octet-stream");
+ }
+
/* if there is a custom folder icon, use it */
if(isNative() && type == G_FILE_TYPE_DIRECTORY) {
auto local_path = path().localPath();
--- a/src/core/fileinfojob.cpp
+++ b/src/core/fileinfojob.cpp
@@ -13,31 +13,41 @@ FileInfoJob::FileInfoJob(FilePathList pa
void FileInfoJob::exec() {
for(const auto& path: paths_) {
- if(!isCancelled()) {
+ if(isCancelled()) {
+ break;
+ }
+ currentPath_ = path;
+
+ bool retry;
+ do {
+ retry = false;
GErrorPtr err;
GFileInfoPtr inf{
g_file_query_info(path.gfile().get(), defaultGFileInfoQueryAttribs,
G_FILE_QUERY_INFO_NONE, cancellable().get(), &err),
false
};
- if(!inf) {
- continue;
- }
-
- // Reuse the same dirPath object when the path remains the same (optimize for files in the same dir)
- auto dirPath = commonDirPath_.isValid() ? commonDirPath_ : path.parent();
- FileInfo fileInfo(inf, dirPath);
+ if(inf) {
+ // Reuse the same dirPath object when the path remains the same (optimize for files in the same dir)
+ auto dirPath = commonDirPath_.isValid() ? commonDirPath_ : path.parent();
+ auto fileInfoPtr = std::make_shared<FileInfo>(inf, dirPath);
+
+ // FIXME: this is not elegant
+ if(cutFilesHashSet_
+ && cutFilesHashSet_->count(path.hash())) {
+ fileInfoPtr->bindCutFiles(cutFilesHashSet_);
+ }
- if(cutFilesHashSet_
- && cutFilesHashSet_->count(fileInfo.path().hash())) {
- fileInfo.bindCutFiles(cutFilesHashSet_);
+ results_.push_back(fileInfoPtr);
+ Q_EMIT gotInfo(path, results_.back());
}
-
- auto fileInfoPtr = std::make_shared<const FileInfo>(fileInfo);
-
- results_.push_back(fileInfoPtr);
- Q_EMIT gotInfo(path, fileInfoPtr);
- }
+ else {
+ auto act = emitError(err);
+ if(act == Job::ErrorAction::RETRY) {
+ retry = true;
+ }
+ }
+ } while(retry && !isCancelled());
}
}
--- a/src/core/fileinfojob.h
+++ b/src/core/fileinfojob.h
@@ -27,6 +27,10 @@ public:
return results_;
}
+ const FilePath& currentPath() const {
+ return currentPath_;
+ }
+
Q_SIGNALS:
void gotInfo(const FilePath& path, std::shared_ptr<const FileInfo>& info);
@@ -39,6 +43,7 @@ private:
FileInfoList results_;
FilePath commonDirPath_;
const std::shared_ptr<const HashSet> cutFilesHashSet_;
+ FilePath currentPath_;
};
} // namespace Fm
--- a/src/core/gioptrs.h
+++ b/src/core/gioptrs.h
@@ -112,6 +112,10 @@ public:
return err_;
}
+ const GError* operator->() const {
+ return err_;
+ }
+
bool operator == (const GErrorPtr& other) const {
return err_ == other.err_;
}
--- a/src/filelauncher.cpp
+++ b/src/filelauncher.cpp
@@ -76,7 +76,7 @@ bool FileLauncher::openFolder(GAppLaunch
return BasicFileLauncher::openFolder(ctx, folderInfos, err);
}
-bool FileLauncher::showError(GAppLaunchContext* /*ctx*/, GErrorPtr &err, const FilePath &path, const FileInfoPtr &info) {
+bool FileLauncher::showError(GAppLaunchContext* /*ctx*/, const GErrorPtr &err, const FilePath &path, const FileInfoPtr &info) {
/* ask for mount if trying to launch unmounted path */
if(err->domain == G_IO_ERROR) {
if(path && err->code == G_IO_ERROR_NOT_MOUNTED) {
--- a/src/filelauncher.h
+++ b/src/filelauncher.h
@@ -43,7 +43,7 @@ protected:
bool openFolder(GAppLaunchContext* ctx, const FileInfoList& folderInfos, GErrorPtr& err) override;
- bool showError(GAppLaunchContext* ctx, GErrorPtr& err, const FilePath& path = FilePath{}, const FileInfoPtr& info = FileInfoPtr{}) override;
+ bool showError(GAppLaunchContext* ctx, const GErrorPtr &err, const FilePath& path = FilePath{}, const FileInfoPtr& info = FileInfoPtr{}) override;
ExecAction askExecFile(const FileInfoPtr& file) override;

@ -0,0 +1,68 @@
Description: Correctly handle mountable types
Author: "Hong Jen Yee (PCMan)" <pcman.tw@gmail.com>
Origin: upstream
Applied-Upstream: commit:dc7a575
Last-Update: 2018-07-14
--- a/src/core/basicfilelauncher.cpp
+++ b/src/core/basicfilelauncher.cpp
@@ -28,11 +28,10 @@ bool BasicFileLauncher::launchFiles(cons
// classify files according to different mimetypes
for(auto& fileInfo : fileInfos) {
/*
- qDebug("path: %s, type: %s, target: %s, isDir: %i, isDesktopEntry: %i",
+ qDebug("path: %s, type: %s, target: %s, isDir: %i, isShortcut: %i, isMountable: %i, isDesktopEntry: %i",
fileInfo->path().toString().get(), fileInfo->mimeType()->name(), fileInfo->target().c_str(),
- fileInfo->isDir(), fileInfo->isDesktopEntry());
+ fileInfo->isDir(), fileInfo->isShortcut(), fileInfo->isMountable(), fileInfo->isDesktopEntry());
*/
-
if(fileInfo->isMountable()) {
if(fileInfo->target().empty()) {
// the mountable is not yet mounted so we have no target URI.
@@ -267,6 +266,7 @@ FilePath BasicFileLauncher::handleShortc
// if we know the target is a dir, we are not going to open it using other apps
// for example: `network:///smb-root' is a shortcut targeting `smb:///' and it's also a dir
if(fileInfo->isDir()) {
+ qDebug("shortcut is dir: %s", target.c_str());
return FilePath::fromPathStr(target.c_str());
}
--- a/src/core/fileinfo.cpp
+++ b/src/core/fileinfo.cpp
@@ -118,7 +118,8 @@ void FileInfo::setFromGFileInfo(const GO
isDeletable_ = true;
}
- isShortcut_ = false;
+ isShortcut_ = (type == G_FILE_TYPE_SHORTCUT);
+ isMountable_ = (type == G_FILE_TYPE_MOUNTABLE);
/* special handling for symlinks */
if(g_file_info_get_is_symlink(inf.get())) {
@@ -129,7 +130,6 @@ void FileInfo::setFromGFileInfo(const GO
switch(type) {
case G_FILE_TYPE_SHORTCUT:
- isShortcut_ = true;
/* Falls through. */
case G_FILE_TYPE_MOUNTABLE:
uri = g_file_info_get_attribute_string(inf.get(), G_FILE_ATTRIBUTE_STANDARD_TARGET_URI);
--- a/src/core/fileinfo.h
+++ b/src/core/fileinfo.h
@@ -151,7 +151,7 @@ public:
}
bool isMountable() const {
- return mimeType_->isMountable();
+ return isMountable_;
}
bool isShortcut() const {
@@ -239,6 +239,7 @@ private:
std::string target_; /* target of shortcut or mountable. */
bool isShortcut_ : 1; /* TRUE if file is shortcut type */
+ bool isMountable_ : 1; /* TRUE if file is mountable type */
bool isAccessible_ : 1; /* TRUE if can be read by user */
bool isWritable_ : 1; /* TRUE if can be written to by user */
bool isDeletable_ : 1; /* TRUE if can be deleted by user */

@ -1,16 +0,0 @@
Description: Fix metadata for trusting executables
To conform with the Ubuntu standard use metadata::trusted instead of metadata::trust. This patch must be applied after any upstream version changes since they refuse to conform.
Author: Dan Simmons <monetaryabyss@protonmail.com>
Bug: https://bugs.launchpad.net/bugs/1813687
Last-Update: 2019-01-29
--- a/src/core/fileinfo.cpp
+++ b/src/core/fileinfo.cpp
@@ -2,7 +2,7 @@
#include "fileinfo_p.h"
#include <gio/gio.h>
-#define METADATA_TRUST "metadata::trust"
+#define METADATA_TRUST "metadata::trusted"
namespace Fm {

@ -0,0 +1,52 @@
Description: Use window text color for places view
Author: tsujan <tsujan2000@gmail.com>
Origin: upstream
Bug: https://github.com/lxqt/pcmanfm-qt/issues/696
Applied-Upstream: commit:87df010
Last-Update: 2018-07-14
--- a/src/folderitemdelegate.cpp
+++ b/src/folderitemdelegate.cpp
@@ -361,7 +361,8 @@ QWidget* FolderItemDelegate::createEdito
// ensure that its background isn't transparent (on the side-pane)
QWidget* editor = QStyledItemDelegate::createEditor(parent, option, index);
QPalette p = editor->palette();
- p.setColor(QPalette::Base, QApplication::palette().color(QPalette::Base));
+ p.setColor(QPalette::Text, qApp->palette().text().color());
+ p.setColor(QPalette::Base, qApp->palette().color(QPalette::Base));
editor->setPalette(p);
return editor;
}
--- a/src/placesview.cpp
+++ b/src/placesview.cpp
@@ -131,13 +131,6 @@ PlacesView::PlacesView(QWidget* parent):
setHeaderHidden(true);
setIndentation(12);
- /* merge with the surroundings */
- setFrameShape(QFrame::NoFrame);
- QPalette p = palette();
- p.setColor(QPalette::Base, QColor(Qt::transparent));
- setPalette(p);
- viewport()->setAutoFillBackground(false);
-
connect(this, &QTreeView::clicked, this, &PlacesView::onClicked);
connect(this, &QTreeView::pressed, this, &PlacesView::onPressed);
--- a/src/sidepane.cpp
+++ b/src/sidepane.cpp
@@ -158,6 +158,15 @@ void SidePane::setMode(Mode mode) {
switch(mode) {
case ModePlaces: {
PlacesView* placesView = new Fm::PlacesView(this);
+
+ // visually merge it with its surroundings
+ placesView->setFrameShape(QFrame::NoFrame);
+ QPalette p = placesView->palette();
+ p.setColor(QPalette::Base, QColor(Qt::transparent));
+ p.setColor(QPalette::Text, p.color(QPalette::WindowText));
+ placesView->setPalette(p);
+ placesView->viewport()->setAutoFillBackground(false);
+
view_ = placesView;
placesView->restoreHiddenItems(restorableHiddenPlaces_);
placesView->setIconSize(iconSize_);

@ -0,0 +1,373 @@
Description: Move the Qt file dialog helper into libfm-qt.
Author: Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
Origin: upstream
Applied-Upstream: commit:cc63bc7
Last-Update: 2018-07-30
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -83,6 +83,7 @@ set(libfm_SRCS
filedialog.cpp
fm-search.c # might be moved to libfm later
xdndworkaround.cpp
+ filedialoghelper.cpp
)
set(libfm_UIS
--- /dev/null
+++ b/src/filedialoghelper.cpp
@@ -0,0 +1,290 @@
+#include "filedialoghelper.h"
+
+#include "libfmqt.h"
+#include "filedialog.h"
+
+#include <QWindow>
+#include <QDebug>
+#include <QTimer>
+#include <QSettings>
+#include <QtGlobal>
+
+#include <memory>
+
+namespace Fm {
+
+inline static const QString viewModeToString(Fm::FolderView::ViewMode value);
+inline static Fm::FolderView::ViewMode viewModeFromString(const QString& str);
+
+FileDialogHelper::FileDialogHelper() {
+ // can only be used after libfm-qt initialization
+ dlg_ = std::unique_ptr<Fm::FileDialog>(new Fm::FileDialog());
+ connect(dlg_.get(), &Fm::FileDialog::accepted, [this]() {
+ saveSettings();
+ accept();
+ });
+ connect(dlg_.get(), &Fm::FileDialog::rejected, [this]() {
+ saveSettings();
+ reject();
+ });
+
+ connect(dlg_.get(), &Fm::FileDialog::fileSelected, this, &FileDialogHelper::fileSelected);
+ connect(dlg_.get(), &Fm::FileDialog::filesSelected, this, &FileDialogHelper::filesSelected);
+ connect(dlg_.get(), &Fm::FileDialog::currentChanged, this, &FileDialogHelper::currentChanged);
+ connect(dlg_.get(), &Fm::FileDialog::directoryEntered, this, &FileDialogHelper::directoryEntered);
+ connect(dlg_.get(), &Fm::FileDialog::filterSelected, this, &FileDialogHelper::filterSelected);
+}
+
+FileDialogHelper::~FileDialogHelper() {
+}
+
+void FileDialogHelper::exec() {
+ dlg_->exec();
+}
+
+bool FileDialogHelper::show(Qt::WindowFlags windowFlags, Qt::WindowModality windowModality, QWindow* parent) {
+ dlg_->setAttribute(Qt::WA_NativeWindow, true); // without this, sometimes windowHandle() will return nullptr
+
+ dlg_->setWindowFlags(windowFlags);
+ dlg_->setWindowModality(windowModality);
+
+ // Reference: KDE implementation
+ // https://github.com/KDE/plasma-integration/blob/master/src/platformtheme/kdeplatformfiledialoghelper.cpp
+ dlg_->windowHandle()->setTransientParent(parent);
+
+ applyOptions();
+
+ loadSettings();
+ // central positioning with respect to the parent window
+ if(parent && parent->isVisible()) {
+ dlg_->move(parent->x() + (parent->width() - dlg_->width()) / 2,
+ parent->y() + (parent->height() - dlg_->height()) / 2);
+ }
+
+ // NOTE: the timer here is required as a workaround borrowed from KDE. Without this, the dialog UI will be blocked.
+ // QFileDialog calls our platform plugin to show our own native file dialog instead of showing its widget.
+ // However, it still creates a hidden dialog internally, and then make it modal.
+ // So user input from all other windows that are not the children of the QFileDialog widget will be blocked.
+ // This includes our own dialog. After the return of this show() method, QFileDialog creates its own window and
+ // then make it modal, which blocks our UI. The timer schedule a delayed popup of our file dialog, so we can
+ // show again after QFileDialog and override the modal state. Then our UI can be unblocked.
+ QTimer::singleShot(0, dlg_.get(), &QDialog::show);
+ dlg_->setFocus();
+ return true;
+}
+
+void FileDialogHelper::hide() {
+ dlg_->hide();
+}
+
+bool FileDialogHelper::defaultNameFilterDisables() const {
+ return false;
+}
+
+void FileDialogHelper::setDirectory(const QUrl& directory) {
+ dlg_->setDirectory(directory);
+}
+
+QUrl FileDialogHelper::directory() const {
+ return dlg_->directory();
+}
+
+void FileDialogHelper::selectFile(const QUrl& filename) {
+ dlg_->selectFile(filename);
+}
+
+QList<QUrl> FileDialogHelper::selectedFiles() const {
+ return dlg_->selectedFiles();
+}
+
+void FileDialogHelper::setFilter() {
+ // FIXME: what's this?
+ // The gtk+ 3 file dialog helper in Qt5 update options in this method.
+ applyOptions();
+}
+
+void FileDialogHelper::selectNameFilter(const QString& filter) {
+ dlg_->selectNameFilter(filter);
+}
+
+#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0)
+QString FileDialogHelper::selectedMimeTypeFilter() const {
+ return dlg_->selectedMimeTypeFilter();
+}
+
+void FileDialogHelper::selectMimeTypeFilter(const QString& filter) {
+ dlg_->selectMimeTypeFilter(filter);
+}
+#endif
+
+QString FileDialogHelper::selectedNameFilter() const {
+ return dlg_->selectedNameFilter();
+}
+
+bool FileDialogHelper::isSupportedUrl(const QUrl& url) const {
+ return dlg_->isSupportedUrl(url);
+}
+
+void FileDialogHelper::applyOptions() {
+ auto& opt = options();
+
+ // set title
+ if(opt->windowTitle().isEmpty()) {
+ dlg_->setWindowTitle(opt->acceptMode() == QFileDialogOptions::AcceptOpen ? tr("Open File")
+ : tr("Save File"));
+ }
+ else {
+ dlg_->setWindowTitle(opt->windowTitle());
+ }
+
+ dlg_->setFilter(opt->filter());
+ dlg_->setFileMode(QFileDialog::FileMode(opt->fileMode()));
+ dlg_->setAcceptMode(QFileDialog::AcceptMode(opt->acceptMode())); // also sets a default label for accept button
+ // bool useDefaultNameFilters() const;
+ dlg_->setNameFilters(opt->nameFilters());
+ if(!opt->mimeTypeFilters().empty()) {
+ dlg_->setMimeTypeFilters(opt->mimeTypeFilters());
+ }
+
+ dlg_->setDefaultSuffix(opt->defaultSuffix());
+ // QStringList history() const;
+
+ // explicitly set labels
+ for(int i = 0; i < QFileDialogOptions::DialogLabelCount; ++i) {
+ auto label = static_cast<QFileDialogOptions::DialogLabel>(i);
+ if(opt->isLabelExplicitlySet(label)) {
+ dlg_->setLabelText(static_cast<QFileDialog::DialogLabel>(label), opt->labelText(label));
+ }
+ }
+
+ auto url = opt->initialDirectory();
+ if(url.isValid()) {
+ dlg_->setDirectory(url);
+ }
+
+
+#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0)
+ auto filter = opt->initiallySelectedMimeTypeFilter();
+ if(!filter.isEmpty()) {
+ selectMimeTypeFilter(filter);
+ }
+ else {
+ filter = opt->initiallySelectedNameFilter();
+ if(!filter.isEmpty()) {
+ selectNameFilter(opt->initiallySelectedNameFilter());
+ }
+ }
+#else
+ auto filter = opt->initiallySelectedNameFilter();
+ if(!filter.isEmpty()) {
+ selectNameFilter(filter);
+ }
+#endif
+
+ auto selectedFiles = opt->initiallySelectedFiles();
+ for(const auto& selectedFile: selectedFiles) {
+ selectFile(selectedFile);
+ }
+ // QStringList supportedSchemes() const;
+}
+
+static const QString viewModeToString(Fm::FolderView::ViewMode value) {
+ QString ret;
+ switch(value) {
+ case Fm::FolderView::DetailedListMode:
+ default:
+ ret = QLatin1String("Detailed");
+ break;
+ case Fm::FolderView::CompactMode:
+ ret = QLatin1String("Compact");
+ break;
+ case Fm::FolderView::IconMode:
+ ret = QLatin1String("Icon");
+ break;
+ case Fm::FolderView::ThumbnailMode:
+ ret = QLatin1String("Thumbnail");
+ break;
+ }
+ return ret;
+}
+
+Fm::FolderView::ViewMode viewModeFromString(const QString& str) {
+ Fm::FolderView::ViewMode ret;
+ if(str == QLatin1String("Detailed")) {
+ ret = Fm::FolderView::DetailedListMode;
+ }
+ else if(str == QLatin1String("Compact")) {
+ ret = Fm::FolderView::CompactMode;
+ }
+ else if(str == QLatin1String("Icon")) {
+ ret = Fm::FolderView::IconMode;
+ }
+ else if(str == QLatin1String("Thumbnail")) {
+ ret = Fm::FolderView::ThumbnailMode;
+ }
+ else {
+ ret = Fm::FolderView::DetailedListMode;
+ }
+ return ret;
+}
+
+void FileDialogHelper::loadSettings() {
+ QSettings settings(QSettings::UserScope, "lxqt", "filedialog");
+ settings.beginGroup ("Sizes");
+ dlg_->resize(settings.value("WindowSize", QSize(700, 500)).toSize());
+ dlg_->setSplitterPos(settings.value("SplitterPos", 200).toInt());
+ settings.endGroup();
+
+ settings.beginGroup ("View");
+ dlg_->setViewMode(viewModeFromString(settings.value("Mode", "Detailed").toString()));
+ settings.endGroup();
+}
+
+void FileDialogHelper::saveSettings() {
+ QSettings settings(QSettings::UserScope, "lxqt", "filedialog");
+ settings.beginGroup ("Sizes");
+ QSize windowSize = dlg_->size();
+ if(settings.value("WindowSize") != windowSize) { // no redundant write
+ settings.setValue("WindowSize", windowSize);
+ }
+ int splitterPos = dlg_->splitterPos();
+ if(settings.value("SplitterPos") != splitterPos) {
+ settings.setValue("SplitterPos", splitterPos);
+ }
+ settings.endGroup();
+
+ settings.beginGroup ("View");
+ QString mode = viewModeToString(dlg_->viewMode());
+ if(settings.value("Mode") != mode) {
+ settings.setValue("Mode", mode);
+ }
+ settings.endGroup();
+}
+
+/*
+FileDialogPlugin::FileDialogPlugin() {
+
+}
+
+QPlatformFileDialogHelper *FileDialogPlugin::createHelper() {
+ return new FileDialogHelper();
+}
+*/
+
+} // namespace Fm
+
+
+QPlatformFileDialogHelper *createFileDialogHelper() {
+ // When a process has this environment set, that means glib event loop integration is disabled.
+ // In this case, libfm just won't work. So let's disable the file dialog helper and return nullptr.
+ if(qgetenv("QT_NO_GLIB") == "1") {
+ return nullptr;
+ }
+
+ static std::unique_ptr<Fm::LibFmQt> libfmQtContext_;
+ if(!libfmQtContext_) {
+ // initialize libfm-qt only once
+ libfmQtContext_ = std::unique_ptr<Fm::LibFmQt>{new Fm::LibFmQt()};
+ }
+ return new Fm::FileDialogHelper{};
+}
--- /dev/null
+++ b/src/filedialoghelper.h
@@ -0,0 +1,62 @@
+#ifndef FILEDIALOGHELPER_H
+#define FILEDIALOGHELPER_H
+
+#include "libfmqtglobals.h"
+#include <qpa/qplatformdialoghelper.h> // this private header is subject to changes
+#include <memory>
+
+namespace Fm {
+
+class FileDialog;
+
+class LIBFM_QT_API FileDialogHelper : public QPlatformFileDialogHelper {
+ Q_OBJECT
+
+public:
+ FileDialogHelper();
+
+ virtual ~FileDialogHelper();
+
+ // QPlatformDialogHelper
+ void exec() override;
+ bool show(Qt::WindowFlags windowFlags, Qt::WindowModality windowModality, QWindow *parent) override;
+ void hide() override;
+
+ // QPlatformFileDialogHelper
+ bool defaultNameFilterDisables() const override;
+ void setDirectory(const QUrl &directory) override;
+ QUrl directory() const override;
+ void selectFile(const QUrl &filename) override;
+ QList<QUrl> selectedFiles() const override;
+ void setFilter() override;
+ void selectNameFilter(const QString &filter) override;
+#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0)
+ QString selectedMimeTypeFilter() const override;
+ void selectMimeTypeFilter(const QString &filter) override;
+#endif
+ QString selectedNameFilter() const override;
+
+ bool isSupportedUrl(const QUrl &url) const override;
+
+private:
+ void applyOptions();
+ void loadSettings();
+ void saveSettings();
+
+private:
+ std::unique_ptr<Fm::FileDialog> dlg_;
+};
+
+} // namespace Fm
+
+// export a C API without C++ name mangling so others can dynamically load libfm-qt at runtime
+// to call this API and get a new QPlatformFileDialogHelper object.
+
+extern "C" {
+
+// if the process calling this API fail to load libfm-qt, nullptr will be returned instead.
+LIBFM_QT_API QPlatformFileDialogHelper* createFileDialogHelper();
+
+}
+
+#endif // FILEDIALOGHELPER_H

@ -1 +1,6 @@
fix-metadata-for-trusting-executables.patch
add-lxqt-archiver-integration.patch
fix-incorrect-file-info-handling-1.patch
fix-incorrect-file-info-handling-2.patch
fix-places-font-color.patch
move-in-file-dialog.patch
add-metadata-for-trusting-executables.patch

2
debian/rules vendored

@ -2,6 +2,7 @@
# export DH_VERBOSE = 1
export LC_ALL=C.UTF-8
export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
%:
@ -12,5 +13,6 @@ override_dh_missing:
override_dh_auto_configure:
dh_auto_configure -- \
-DPULL_TRANSLATIONS=OFF \
-DUPDATE_TRANSLATIONS=OFF \
-DCMAKE_BUILD_TYPE=RelWithDebInfo

@ -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,5 +0,0 @@
Name: libfm-qt
Bug-Database: https://github.com/lxqt/libfm-qt/issues
Bug-Submit: https://github.com/lxqt/libfm-qt/issues/new
Changelog: https://github.com/lxqt/libfm-qt/blob/master/CHANGELOG
Repository: https://github.com/lxqt/libfm-qt

@ -1,52 +1,50 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBF6cxrwBEADfl3ydxNfLBbWGPesXty2baQgixZ3D6aCxadI2kX+aikmT8rd0
ttDKN18cXV52Ssxnj0qhgf4hwnu/b0be6BzqSEyGM+UQR3X2CYpxrMakfW32Q18K
X5ec0RPR2ucBq9G0r9t6FYC8FkJ4uQUU3xxrLW3z302S0Makjgzm8BV9WrFQ7oFF
uJQj0BHbHYC4RyaZb2AfxY4Y92BPGTjtGekWqgw6vEXCCnvAbGYVQzvxZt3nw21/
1YmV4g7xhGFQPbOf9v3ejFUJeJIGzuJf5NAh7kvfCdUBAGYH0gnj0GpOve4ftnaG
sAId2CQwm3oYF4Tu7yBPTOBpkaKkNaT+UdwTyeKERuCZ9ocZWX++/YF9ItRkJ5mM
zoP1GluWn2atNWpRh/K97gyAGgr2fSmrAA4d1JrVbMujZAHoHAOKwJKqX9jPziPZ
BFHfhcIOzG3ZhXAuumHsd7uwfPBVt20g+G+cOjBghbSSu9EOtMkAZl1g3ybvZixu
Jtxa5exZWEmU7vtytEb8eq9Dj5XcGoTDbErE2RpJ/20HPzhyRKg9RN4iGS+0OiHS
oRbDi5IEOizvQjp2bsBmfa3rsoDSOqF2pevp+u8I56I6bU1GFpxxNC5IGvgo2Q79
quz0oIk5hs3eLlUdEYsLGwR6pWJaJyf36vuDsq7iLrLyvHI5irAowO4r1QARAQAB
tCVQZWRyYW0gUG91cmFuZyA8dHN1amFuMjAwMEBnbWFpbC5jb20+iQJOBBMBCAA4
FiEEGd/fOleb1QnbtXLYvnkwB60i334FAl6cxrwCGwMFCwkIBwIGFQoJCAsCBBYC
AwECHgECF4AACgkQvnkwB60i335f9RAAgRpn8gUa/l10UkVAnpM2Cz0MuNMwwCOq
IfVnuZuPBtYYiTU5Su++/aPZe3fF5B4v61F+XjNi7qeVL2t52X3jZ/iIx9Syasb+
vDAIfQ5t6lKXvOptWxf6vteOg6CHbXwpGHbPjUkUS2vQwRikjBnR0SnkrMoXtgSX
amPFqsitNrOhEJfeDfo0NzKESZuliWrCFt2v8c5q18G8cCZAvPLBlGuwRl58cDep
3EIibMI/9MUSJbKoiHlK+LcHtG7BQTNis/e7Pe1PkRmExfhxe1lNajtOx8FO72Tq
B6zY6drippM9VaIc1M+zp9BRpsFu8whOmapCqlXHRgAK8xTdQRIGInQFqLWPOxSC
f0B6N+EvQvgkyFQ1rW+u91OJBma46uKkhrwf+mDttVRncaIAkgE6e6pqm18yIPFk
D42rt/yHcOl+2qkcJS3gPcg5UvlCzqOwg1rKZQIk+TcPuDx3r2UghDEYZN9X6vw3
zCBufr7ygZNf4tkbnVARFWTR4GzyCseFkWgOVZL9DccAhs8NeMy1WLkUzB75adeR
3LONmEL7xOI8FuknKY4e6EcWhmstNIDgXfRe0hwO0VBdW3unoZC/K2ZM/ZuZyMdK
TFjvYJrNewmymKge68wo0054bGZn8oz17i2AosJz7kW+ITsxmxhVcpfl4bav9Neq
RpQwhnhK9bC5Ag0EXpzGvAEQANbeRHFbpgQVIqV9WVOVnTj4FIqrTPTPKKa02vJA
7tGpgFapgvjdxnMxJfV6wuwOBUUFLR7DrXlV8EVFAYc5qTIeSQXvJsWw6gQ3+f0D
z13oGOhZPBIzIKnV/MZI/jhIio8kSPWAuM5hR2X9Hvw3/CLo+H+hZZ6cFYoCxrQS
tTzcKMkdQizLLa+WNbqUSxg6I/P5k/smUDY9gKW7RtI5t/PupA3WTnsVD6CYWa3Q
c1O/1mUgqT6nQ5N9KCPpjZQRT6D6eIMmePtS85z4PPeYMJxPsKRYWPGRxKhCSdZl
/0wsC8aRtmwYT729e0ZgTAmUnj+rQp5hboF/ZPFjIoXR9G+0HnoY0a/nqVO4lUON
AV25GnMFGVyiHHlbH/0gboywwnzEg8BZbk+Z/61oOzBIW09sfG8fn8bsbkpL+nHf
Mi/Vauge6wSfw7I5AfSiwrSDNHmKVsu39koWV6JGxEeFr2MffF+CuaoJCNOr/ZII
SYR5ku3Y/lMKyUH1Oas0RWzFrdRcInqYK90A0x083zP4V445MvCwbRPzQAkm9wOP
kILLhE5FW+9/O0/9bpx4joJUDLV4d3hFZy7GSHKiZUs1QW6BV75JQKqoi+cVt+/L
+o1S8CMNekjqdC2mWRosM3doo51zT/FWNzQA1QcoZP2hORJDfw66y+4wPq6o8y1W
jR35ABEBAAGJAjYEGAEIACAWIQQZ3986V5vVCdu1cti+eTAHrSLffgUCXpzGvAIb
DAAKCRC+eTAHrSLffgbJD/4qW5YOo/BayBhaUh2L7VP7JNlECb/2xNNOFKI1NjNr
nOmgSJLzf74Uhmt5W+iVjmJBHrDceprIPkizmPrn90kIsPIMtHIDNxzUgKZHbnza
j1vZyAeC+JV79X1hOVpprj1TJwy65lpxXNyYnGqeIOgyFokn9fOHXv8aMQwpNuUr
bdUJ1C75jYrvwy/NR1DczIFFYgsbkDGDtjVBjyMc5JAgvUBz37/iVPJfWP6dKVnf
abRnUVzHgvgK7bnab00SA1TiWvjHURGjo+5rnRtv8X/AgStc2Phjq68TMIgMn0F2
kjUVvfQotNqzo9madNshvUDmsGtAzKh4e0dS1ear7u3nRp4Z7fqSrTEtXKNbEPwZ
wdWrWmmQLacNQBSe/FtcMzGF6xIVr4lnrL0bFjqBdQpdTC7vns3QSKk8/GFiEfpv
kzXrDbGV7jX2OWDjNHKcmXX2+E1CsNaJgS7zOgZw5jvbvlTLJUwyYNlM1VLI2OFW
Oa86l8pqli+B7rpTbsAE9Ut8qUaWjm87oUNSJbaKgqNnMaE+b/8VJaEeWHgQJwsD
bJSJ/O/vzlRtDjOJ1JDlMRLs7TnOFeUh5pgwyaJoidYbJEiGlMGJbI6BjwhDTBFO
NLJtd3SsRjc7ICtGdCvej59IvCDTjxtkhx5okF03APi1aXpHQrE18/arFD7BpoGO
sw==
=gSIv
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
=h7ww
-----END PGP PUBLIC KEY BLOCK-----

6
debian/watch vendored

@ -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…
Cancel
Save