Compare commits

..

No commits in common. "ubuntu/plucky" and "ubuntu/kinetic" have entirely different histories.

14 changed files with 827 additions and 955 deletions

105
debian/changelog vendored
View File

@ -1,107 +1,3 @@
pcmanfm-qt (2.1.0-0ubuntu3) plucky; urgency=medium
* Update Standards-Version to 4.7.1, no changes needed.
-- Simon Quigley <tsimonq2@ubuntu.com> Fri, 21 Feb 2025 16:35:29 -0600
pcmanfm-qt (2.1.0-0ubuntu2) plucky; urgency=medium
* No-change rebuild for lxqt-build-tools C++17 -> C++20.
-- Simon Quigley <tsimonq2@ubuntu.com> Fri, 03 Jan 2025 04:00:52 -0600
pcmanfm-qt (2.1.0-0ubuntu1) plucky; urgency=medium
* New upstream release.
- Update build dependencies.
-- Simon Quigley <tsimonq2@ubuntu.com> Fri, 15 Nov 2024 15:33:33 -0600
pcmanfm-qt (2.0.0-0ubuntu1) oracular; urgency=medium
* New upstream release.
* Bump Standards-Version to 4.7.0, no changes necessary.
* Adjust build dependencies.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Thu, 15 Aug 2024 16:27:12 -0500
pcmanfm-qt (1.4.1-0ubuntu1) noble; urgency=medium
* New upstream release.
* Updated copyright file.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Sun, 18 Feb 2024 16:31:24 -0600
pcmanfm-qt (1.4.0-0ubuntu3) noble; urgency=medium
* Update the Lubuntu Manual patch to use the dedicated icon.
-- Simon Quigley <tsimonq2@ubuntu.com> Fri, 01 Dec 2023 14:54:31 -0600
pcmanfm-qt (1.4.0-0ubuntu2) noble; urgency=medium
* Bump runtime dependency.
-- Simon Quigley <tsimonq2@ubuntu.com> Mon, 13 Nov 2023 15:51:03 -0600
pcmanfm-qt (1.4.0-0ubuntu1) noble; urgency=medium
* New upstream release.
* Bump build dependencies.
* Update Lubuntu Manual patch. Needs testing.
* Install new SVG file.
-- Simon Quigley <tsimonq2@ubuntu.com> Sun, 12 Nov 2023 21:27:52 -0600
pcmanfm-qt (1.3.0-0ubuntu1) mantic; urgency=medium
* New upstream release.
* Bump build dependencies.
-- Simon Quigley <tsimonq2@ubuntu.com> Fri, 11 Aug 2023 09:52:17 -0500
pcmanfm-qt (1.2.1-0ubuntu3) lunar; urgency=medium
* Made the General tab in Desktop Preferences the default tab again.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Tue, 07 Mar 2023 12:35:39 -0600
pcmanfm-qt (1.2.1-0ubuntu2) lunar; urgency=medium
* Put the Lubuntu Manual checkbox where it belongs in the Desktop
Preferences window. (LP: #1998528)
* Make the Lubuntu Manual checkbox behave correctly (if the shortcut is
present, it should be checked, if the shortcut is missing, it should be
unchecked).
* Make the context menu of the Lubuntu Manual shortcut on the desktop behave
like the other special shortcuts (Home, Trash, Computer, Network).
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Thu, 02 Mar 2023 17:41:45 -0600
pcmanfm-qt (1.2.1-0ubuntu1) lunar; urgency=medium
* New upstream release.
* Updated copyright file.
* Bumped Standards-Version to 4.6.2, no changes necessary.
* Bumped build dependency for libfm-qt.
* Removed obsolete '-Wl,--as-needed' linker flag.
* Added 'Rules-Requires-Root: no' to debian/control.
* Removed trailing whitespace from changelog.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Fri, 27 Jan 2023 15:55:12 -0600
pcmanfm-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.
* Bump Standards-version to 4.6.1, no changes needed.
* Bump build dependencies in debian/control.
* Remove reverse-applicable upstream patches.
* Brief copyright update.
-- Simon Quigley <tsimonq2@ubuntu.com> Fri, 18 Nov 2022 18:55:38 -0600
pcmanfm-qt (1.1.0-0ubuntu4) kinetic; urgency=medium
* Backport some upstream patches:
@ -644,3 +540,4 @@ pcmanfm-qt (0.9.0+20150816-1) unstable; urgency=medium
* Warpped lines in copyright.
-- Andrew Lee (李健秋) <ajqlee@debian.org> Mon, 17 Aug 2015 21:04:54 +0800

56
debian/control vendored
View File

@ -1,6 +1,6 @@
Source: pcmanfm-qt
Maintainer: Lubuntu Developers <lubuntu-devel@lists.ubuntu.com>
Original-Maintainer: LXQt Packaging Team <pkg-lxqt-devel@lists.alioth.debian.org>
XSBC-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>,
@ -9,56 +9,26 @@ Uploaders: Alf Gaida <agaida@siduction.org>,
Section: x11
Priority: optional
Build-Depends: debhelper-compat (= 13),
layer-shell-qt,
libexif-dev,
libfm-qt6-dev (>= 2.1.0),
libkf6windowsystem-dev,
liblayershellqtinterface-dev (>= 6.0.0),
libfm-qt-dev (>= 1.1.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-keysyms1-dev,
libxcb-present-dev,
libxcb-record0-dev,
libxcb-render0-dev,
libxcb-res0-dev,
libxcb-screensaver0-dev,
libxcb-shape0-dev,
libxcb-shm0-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,
libxkbcommon-dev (>= 0.5.0),
lxqt-build-tools (>= 2.1.0),
qt6-svg-dev (>= 6.6.0),
qt6-wayland-dev (>= 6.6.0)
Standards-Version: 4.7.1
Vcs-Browser: https://git.lubuntu.me/Lubuntu/pcmanfm-qt-packaging
Vcs-Git: https://git.lubuntu.me/Lubuntu/pcmanfm-qt-packaging.git
Debian-Vcs-Browser: https://salsa.debian.org/lxqt-team/pcmanfm-qt
Debian-Vcs-Git: https://salsa.debian.org/lxqt-team/pcmanfm-qt.git
lxqt-build-tools (>= 0.11.0)
Standards-Version: 4.5.1
Vcs-Browser: https://phab.lubuntu.me/source/pcmanfm-qt/
Vcs-Git: https://phab.lubuntu.me/source/pcmanfm-qt.git
XS-Debian-Vcs-Browser: https://salsa.debian.org/lxqt-team/pcmanfm-qt
XS-Debian-Vcs-Git: https://salsa.debian.org/lxqt-team/pcmanfm-qt.git
Homepage: https://github.com/lxqt/pcmanfm-qt
Rules-Requires-Root: no
Package: pcmanfm-qt
Architecture: any
Depends: default-dbus-session-bus | dbus-session-bus | dbus-x11,
desktop-file-utils,
libfm-qt6-15,
libfm-qt11 (>= 1.1.0),
lxqt-sudo,
${misc:Depends},
${shlibs:Depends}
@ -82,7 +52,7 @@ Package: pcmanfm-qt-l10n
Architecture: all
Multi-Arch: foreign
Section: localization
Depends: qt6-translations-l10n, ${misc:Depends}
Depends: qttranslations5-l10n, ${misc:Depends}
Description: Language package for pcmanfm-qt
PCManFM-Qt is the Qt port of the LXDE file manager PCManFM.
.

8
debian/copyright vendored
View File

@ -4,18 +4,14 @@ Source: https://github.com/lxqt/pcmanfm-qt
Files: *
Copyright: 2017, Pedram Pourang (Tsu Jan) <tsujan2000@gmail.com>
2013-2024 LXQt team
2013-2018 LXQt team
2009-2018 Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
2012-2013 Andriy Grytsenko (LStranger) <andrej@rep.kiev.ua>
2014 Kuzma Shapran <kuzma.shapran@gmail.com>
License: GPL-2.0+
Files: icons/lubuntu-manual.svg
Copyright: 2010-2018 Rafael Laguna <rafaellaguna@gmail.com>
License: GPL-2.0+
Files: debian/*
Copyright: 2021-2025 Lubuntu Developers <lubuntu-devel@lists.ubuntu.com>
Copyright: 2021, Lubuntu Developers <lubuntu-devel@lists.ubuntu.com>
2014-2015 Wen Liao <wen.cf83@gmail.com>
2014-2016 ChangZhuo Chen (陳昌倬) <czchen@debian.org>
2013-2018 Alf Gaida <agaida@siduction.org>

View File

@ -1,19 +1,35 @@
Description: Add a desktop shortcut for the Lubuntu Manual
Forwarded: eventually
Author: Simon Quigley <tsimonq2@lubuntu.me>
Last-Update: 2023-12-01
Last-Update: 2022-06-16
---
diff --git a/pcmanfm/desktop-preferences.ui b/pcmanfm/desktop-preferences.ui
index d73e731..459926a 100644
--- a/pcmanfm/desktop-preferences.ui
+++ b/pcmanfm/desktop-preferences.ui
@@ -573,6 +573,17 @@ are left clicked, even when it is not the default file manager.</string>
</property>
</widget>
</item>
+ <item>
+ <widget class="QCheckBox" name="lubuntuManualBox">
+ <property name="text">
+ <string>Lubuntu Manual</string>
+ </property>
+ <property name="icon">
+ <iconset theme="help-browser">
+ <normaloff>.</normaloff>.</iconset>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</item>
diff --git a/pcmanfm/desktoppreferencesdialog.cpp b/pcmanfm/desktoppreferencesdialog.cpp
index 87fcfc2..a691d0c 100644
--- a/pcmanfm/desktoppreferencesdialog.cpp
+++ b/pcmanfm/desktoppreferencesdialog.cpp
@@ -120,6 +120,7 @@ DesktopPreferencesDialog::DesktopPrefere
ui.trashBox->setChecked(ds.contains(QLatin1String("Trash")));
ui.computerBox->setChecked(ds.contains(QLatin1String("Computer")));
ui.networkBox->setChecked(ds.contains(QLatin1String("Network")));
+ ui.lubuntuManualBox->setChecked(ds.contains(QLatin1String("Lubuntu Manual")));
connect(ui.buttonBox->button(QDialogButtonBox::Apply), &QPushButton::clicked,
this, &DesktopPreferencesDialog::onApplyClicked);
@@ -208,6 +209,9 @@ void DesktopPreferencesDialog::applySett
@@ -204,6 +204,9 @@ void DesktopPreferencesDialog::applySettings()
if(ui.networkBox->isChecked()) {
ds << QLatin1String("Network");
}
@ -23,9 +39,11 @@ Last-Update: 2023-12-01
settings.setDesktopShortcuts(ds);
settings.setDesktopCellMargins(QSize(ui.hMargin->value(), ui.vMargin->value()));
diff --git a/pcmanfm/desktopwindow.cpp b/pcmanfm/desktopwindow.cpp
index 78e8d2f..3edb7f0 100644
--- a/pcmanfm/desktopwindow.cpp
+++ b/pcmanfm/desktopwindow.cpp
@@ -280,6 +280,16 @@ void DesktopWindow::updateShortcutsFromS
@@ -276,6 +276,16 @@ void DesktopWindow::updateShortcutsFromSettings(Settings& settings) {
paths.push_back(Fm::FilePath::fromLocalPath(network.toStdString().c_str()));
}
}
@ -42,15 +60,15 @@ Last-Update: 2023-12-01
// WARNING: QFile::remove() is not compatible with libfm-qt and should not be used.
if(!paths.empty()) {
@@ -365,6 +375,20 @@ void DesktopWindow::createNetworkShortcu
@@ -361,6 +371,20 @@ void DesktopWindow::createNetworkShortcut() {
g_key_file_free(kf);
}
+void DesktopWindow::createLubuntuManualShortcut() {
+ GKeyFile* kf = g_key_file_new();
+ g_key_file_set_string(kf, "Desktop Entry", "Type", "Application");
+ g_key_file_set_string(kf, "Desktop Entry", "Exec", "xdg-open https://manual.lubuntu.me");
+ g_key_file_set_string(kf, "Desktop Entry", "Icon", "lubuntu-manual");
+ g_key_file_set_string(kf, "Desktop Entry", "Exec", "firefox manual.lubuntu.me");
+ g_key_file_set_string(kf, "Desktop Entry", "Icon", "help-browser");
+ const QString name = tr("Lubuntu Manual");
+ g_key_file_set_string(kf, "Desktop Entry", "Name", name.toStdString().c_str());
+
@ -63,29 +81,21 @@ Last-Update: 2023-12-01
void DesktopWindow::createTrash() {
if(trashMonitor_) {
return;
@@ -1005,7 +1029,8 @@ void DesktopWindow::onFileClicked(int ty
if((fileName == QLatin1String("trash-can.desktop") && ds.contains(QLatin1String("Trash")))
|| (fileName == QLatin1String("user-home.desktop") && ds.contains(QLatin1String("Home")))
|| (fileName == QLatin1String("computer.desktop") && ds.contains(QLatin1String("Computer")))
- || (fileName == QLatin1String("network.desktop") && ds.contains(QLatin1String("Network")))) {
+ || (fileName == QLatin1String("network.desktop") && ds.contains(QLatin1String("Network")))
+ || (fileName == QLatin1String("lubuntu-manual.desktop") && ds.contains(QLatin1String("Lubuntu Manual")))) {
QMenu* menu = new QMenu(this);
// "Open" action for all
QAction* action = menu->addAction(tr("Open"));
@@ -1314,7 +1339,8 @@ void DesktopWindow::trustOurDesktopShort
@@ -1260,7 +1284,8 @@ void DesktopWindow::trustOurDesktopShortcut(std::shared_ptr<const Fm::FileInfo>
const char* execStr = isHome ? homeExec.get() :
fileName == QLatin1String("trash-can.desktop") && ds.contains(QLatin1String("Trash")) ? "pcmanfm-qt trash:///" :
fileName == QLatin1String("computer.desktop") && ds.contains(QLatin1String("Computer")) ? "pcmanfm-qt computer:///" :
- fileName == QLatin1String("network.desktop") && ds.contains(QLatin1String("Network")) ? "pcmanfm-qt network:///" : nullptr;
+ fileName == QLatin1String("network.desktop") && ds.contains(QLatin1String("Network")) ? "pcmanfm-qt network:///" :
+ fileName == QLatin1String("lubuntu-manual.desktop") && ds.contains(QLatin1String("Lubuntu Manual")) ? "xdg-open https://manual.lubuntu.me" : nullptr ;
+ fileName == QLatin1String("lubuntu-manual.desktop") && ds.contains(QLatin1String("Lubuntu Manual")) ? "firefox manual.lubuntu.me" : nullptr ;
if(execStr) {
GKeyFile* kf = g_key_file_new();
if(g_key_file_load_from_file(kf, file->path().toString().get(), G_KEY_FILE_NONE, nullptr)) {
diff --git a/pcmanfm/desktopwindow.h b/pcmanfm/desktopwindow.h
index 742d964..4a90cb4 100644
--- a/pcmanfm/desktopwindow.h
+++ b/pcmanfm/desktopwindow.h
@@ -160,6 +160,7 @@ private:
@@ -155,6 +155,7 @@ private:
void createHomeShortcut();
void createComputerShortcut();
void createNetworkShortcut();
@ -93,709 +103,3 @@ Last-Update: 2023-12-01
void createTrash();
static void onTrashChanged(GFileMonitor* monitor, GFile* gf, GFile* other, GFileMonitorEvent evt, DesktopWindow* pThis);
--- a/pcmanfm/desktop-preferences.ui
+++ b/pcmanfm/desktop-preferences.ui
@@ -664,6 +664,17 @@ are left clicked, even when it is not th
</property>
</widget>
</item>
+ <item>
+ <widget class="QCheckBox" name="lubuntuManualBox">
+ <property name="text">
+ <string>Lubuntu Manual</string>
+ </property>
+ <property name="icon">
+ <iconset theme="lubuntu-manual">
+ <normaloff>.</normaloff>.</iconset>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</item>
--- /dev/null
+++ b/icons/lubuntu-manual.svg
@@ -0,0 +1,683 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="192"
+ height="192"
+ id="svg4700"
+ version="1.1"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="manual192.svg"
+ inkscape:export-filename="/home/rafa/Documents/lubuntu/icons/lubuntu manual/manual192.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs4702">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient4224">
+ <stop
+ style="stop-color:#5a0000;stop-opacity:1"
+ offset="0"
+ id="stop4226" />
+ <stop
+ style="stop-color:#ff0101;stop-opacity:1"
+ offset="1"
+ id="stop4228" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient4382">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.50196081"
+ offset="0"
+ id="stop4384" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop4386" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient4326">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop4328" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop4330" />
+ </linearGradient>
+ <inkscape:path-effect
+ effect="powerstroke"
+ id="path-effect4315"
+ is_visible="true"
+ offset_points="0,0"
+ sort_points="true"
+ interpolator_type="Linear"
+ interpolator_beta="0.2"
+ start_linecap_type="zerowidth"
+ linejoin_type="round"
+ miter_limit="4"
+ end_linecap_type="zerowidth"
+ cusp_linecap_type="round" />
+ <linearGradient
+ id="linearGradient4307">
+ <stop
+ style="stop-color:#90cfff;stop-opacity:1"
+ offset="0"
+ id="stop4309" />
+ <stop
+ style="stop-color:#27a8ff;stop-opacity:0"
+ offset="1"
+ id="stop4311" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4242">
+ <stop
+ id="stop4244"
+ offset="0"
+ style="stop-color:#2b8dd1;stop-opacity:1;" />
+ <stop
+ id="stop4246"
+ offset="1"
+ style="stop-color:#1a557e;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4456">
+ <stop
+ id="stop4458"
+ offset="0"
+ style="stop-color:#2b8dd1;stop-opacity:1;" />
+ <stop
+ id="stop4460"
+ offset="1"
+ style="stop-color:#1b5781;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4389">
+ <stop
+ id="stop4391"
+ offset="0"
+ style="stop-color:#1b557e;stop-opacity:1" />
+ <stop
+ id="stop4393"
+ offset="1"
+ style="stop-color:#1a5179;stop-opacity:1" />
+ </linearGradient>
+ <inkscape:path-effect
+ cusp_linecap_type="round"
+ end_linecap_type="zerowidth"
+ miter_limit="4"
+ linejoin_type="round"
+ start_linecap_type="zerowidth"
+ interpolator_beta="0.2"
+ interpolator_type="Linear"
+ sort_points="true"
+ offset_points="0,0"
+ is_visible="true"
+ id="path-effect4352"
+ effect="powerstroke" />
+ <inkscape:path-effect
+ effect="powerstroke"
+ id="path-effect4344"
+ is_visible="true"
+ offset_points="0,0"
+ sort_points="true"
+ interpolator_type="Linear"
+ interpolator_beta="0.2"
+ start_linecap_type="zerowidth"
+ linejoin_type="round"
+ miter_limit="4"
+ end_linecap_type="zerowidth"
+ cusp_linecap_type="round" />
+ <inkscape:path-effect
+ effect="spiro"
+ id="path-effect4329"
+ is_visible="true" />
+ <inkscape:path-effect
+ cusp_linecap_type="round"
+ end_linecap_type="zerowidth"
+ miter_limit="4"
+ linejoin_type="round"
+ start_linecap_type="zerowidth"
+ interpolator_beta="0.2"
+ interpolator_type="Linear"
+ sort_points="true"
+ offset_points="0,0"
+ is_visible="true"
+ id="path-effect4321"
+ effect="powerstroke" />
+ <inkscape:path-effect
+ effect="powerstroke"
+ id="path-effect4281"
+ is_visible="true"
+ offset_points="0,0"
+ sort_points="true"
+ interpolator_type="Linear"
+ interpolator_beta="0.2"
+ start_linecap_type="zerowidth"
+ linejoin_type="round"
+ miter_limit="4"
+ end_linecap_type="zerowidth"
+ cusp_linecap_type="round" />
+ <linearGradient
+ id="linearGradient3834">
+ <stop
+ style="stop-color:#2b8dd1;stop-opacity:1;"
+ offset="0"
+ id="stop3836" />
+ <stop
+ style="stop-color:#2578b2;stop-opacity:1;"
+ offset="1"
+ id="stop3838" />
+ </linearGradient>
+ <filter
+ id="filter3174"
+ style="color-interpolation-filters:sRGB">
+ <feGaussianBlur
+ stdDeviation="1.71"
+ id="feGaussianBlur3176" />
+ </filter>
+ <linearGradient
+ gradientTransform="scale(1.0058652,0.994169)"
+ gradientUnits="userSpaceOnUse"
+ id="ButtonShadow"
+ y2="7.0165396"
+ x2="45.447727"
+ y1="92.539597"
+ x1="45.447727">
+ <stop
+ offset="0"
+ style="stop-color:#000000;stop-opacity:1"
+ id="stop3750" />
+ <stop
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0.58823532"
+ id="stop3752" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient5048-8-7">
+ <stop
+ offset="0"
+ style="stop-color:#000000;stop-opacity:0"
+ id="stop5050-4-2" />
+ <stop
+ offset="0.5"
+ style="stop-color:#000000;stop-opacity:1"
+ id="stop5056-7-4" />
+ <stop
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0"
+ id="stop5052-0-1-7" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient5060-29-0">
+ <stop
+ offset="0"
+ style="stop-color:#000000;stop-opacity:1"
+ id="stop5062-9-7" />
+ <stop
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0"
+ id="stop5064-08-2" />
+ </linearGradient>
+ <filter
+ id="filter3174-0"
+ style="color-interpolation-filters:sRGB">
+ <feGaussianBlur
+ stdDeviation="1.71"
+ id="feGaussianBlur3176-9" />
+ </filter>
+ <linearGradient
+ gradientTransform="scale(1.0058652,0.994169)"
+ gradientUnits="userSpaceOnUse"
+ id="ButtonShadow-3"
+ y2="7.0165396"
+ x2="45.447727"
+ y1="92.539597"
+ x1="45.447727">
+ <stop
+ offset="0"
+ style="stop-color:#000000;stop-opacity:1"
+ id="stop3750-8" />
+ <stop
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0.58823532"
+ id="stop3752-1" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5060-29-0"
+ id="radialGradient4030"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.06214224,0,0,0.02900085,1.6365015,28.953157)"
+ cx="605.71429"
+ cy="486.64789"
+ fx="605.71429"
+ fy="486.64789"
+ r="117.14286" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5048-8-7"
+ id="linearGradient4032"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.06214224,0,0,0.02900085,1.6242719,28.953157)"
+ x1="302.85715"
+ y1="366.64789"
+ x2="302.85715"
+ y2="609.50507" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5060-29-0"
+ id="radialGradient4034"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.06214224,0,0,0.02900085,46.53201,28.953157)"
+ cx="605.71429"
+ cy="486.64789"
+ fx="605.71429"
+ fy="486.64789"
+ r="117.14286" />
+ <linearGradient
+ id="linearGradient3768"
+ inkscape:collect="always">
+ <stop
+ id="stop3770"
+ offset="0"
+ style="stop-color:#61bbff;stop-opacity:1" />
+ <stop
+ id="stop3772"
+ offset="1"
+ style="stop-color:#0091f3;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4242"
+ id="linearGradient3840"
+ x1="33.189663"
+ y1="1005.5547"
+ x2="33.189663"
+ y2="1051.2649"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.3666402,0,0,3.7220007,15.040259,-3882.4165)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3768"
+ id="linearGradient3465"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.356103,0,0,3.0865386,15.45353,-3243.4134)"
+ x1="15"
+ y1="1005.3622"
+ x2="15"
+ y2="1051.3622" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4389"
+ id="linearGradient3467"
+ gradientUnits="userSpaceOnUse"
+ x1="1.254336"
+ y1="1058.204"
+ x2="15.183573"
+ y2="1058.204"
+ gradientTransform="matrix(3.3666405,0,0,3.0865371,15.040261,-3243.786)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4307"
+ id="linearGradient3469"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.3157894,0,0,3.0340879,16.421055,-3189.475)"
+ x1="34.285713"
+ y1="1002.3465"
+ x2="21.42857"
+ y2="1031.8778" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3834"
+ id="linearGradient4317"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.3666405,0,0,3.0865371,15.040258,-3243.786)"
+ x1="33.189663"
+ y1="1005.5547"
+ x2="33.189663"
+ y2="1051.2649" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3768"
+ id="linearGradient4323"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-3.356103,0,0,3.0865386,174.39992,-3273.2809)"
+ x1="15"
+ y1="1005.3622"
+ x2="15"
+ y2="1051.3622" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4456"
+ id="linearGradient4325"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-3.3666405,0,0,3.0865371,174.81318,-3273.6535)"
+ x1="33.189663"
+ y1="1005.5547"
+ x2="33.540394"
+ y2="1060.9689" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3768"
+ id="linearGradient4297"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.3563192,0,0,3.086755,15.448336,-3243.636)"
+ x1="15"
+ y1="1005.3622"
+ x2="15"
+ y2="1051.3622" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4242"
+ id="linearGradient4299"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.3668574,0,0,3.0867535,15.035041,-3244.0086)"
+ x1="33.189663"
+ y1="1005.5547"
+ x2="33.189663"
+ y2="1051.2649" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4326"
+ id="linearGradient4332"
+ x1="40"
+ y1="43"
+ x2="42"
+ y2="43"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(4.2631576,0,0,4.2666859,-6.3157863,-156.80092)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4382"
+ id="linearGradient4388"
+ x1="15"
+ y1="37"
+ x2="15"
+ y2="4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(4.2631576,0,0,4.2666859,-6.3157863,-156.80092)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4224"
+ id="linearGradient4230"
+ x1="34"
+ y1="40"
+ x2="34"
+ y2="43"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(4.2631576,0,0,4.2666859,-6.3157863,-156.80092)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4326"
+ id="linearGradient3453"
+ gradientUnits="userSpaceOnUse"
+ x1="40"
+ y1="43"
+ x2="42"
+ y2="43"
+ gradientTransform="matrix(4.2631576,0,0,4.2666859,-6.3157863,-156.80092)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4326"
+ id="linearGradient3455"
+ gradientUnits="userSpaceOnUse"
+ x1="40"
+ y1="43"
+ x2="42"
+ y2="43"
+ gradientTransform="matrix(4.2631576,0,0,4.2666859,-6.3157863,-156.80092)" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2"
+ inkscape:cx="148.16082"
+ inkscape:cy="73.78278"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1301"
+ inkscape:window-height="744"
+ inkscape:window-x="65"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1"
+ inkscape:snap-to-guides="false"
+ inkscape:snap-grids="true"
+ inkscape:snap-page="true"
+ inkscape:snap-center="false"
+ inkscape:snap-object-midpoints="false"
+ inkscape:snap-bbox="true"
+ inkscape:snap-bbox-edge-midpoints="true"
+ inkscape:bbox-nodes="true"
+ inkscape:bbox-paths="true"
+ inkscape:snap-smooth-nodes="true"
+ inkscape:object-nodes="true"
+ inkscape:snap-intersection-paths="true"
+ inkscape:object-paths="true"
+ showguides="false"
+ inkscape:snap-bbox-midpoints="true"
+ inkscape:snap-others="false"
+ inkscape:snap-global="false">
+ <inkscape:grid
+ type="xygrid"
+ id="grid1021" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata4705">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ transform="translate(0,144)">
+ <g
+ id="layer2"
+ style="display:none"
+ transform="translate(5.204491,-179.6879)">
+ <rect
+ width="86"
+ height="85"
+ rx="6"
+ ry="6"
+ x="5"
+ y="7"
+ id="rect3745"
+ style="opacity:0.9;fill:url(#ButtonShadow);fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter3174)" />
+ </g>
+ <g
+ id="layer2-0"
+ style="display:none"
+ transform="matrix(1.9515901,0,0,1.9515901,-37.264816,-396.93714)">
+ <rect
+ width="86"
+ height="85"
+ rx="3.0744162"
+ ry="3.0744162"
+ x="5"
+ y="7"
+ id="rect3745-9"
+ style="opacity:0.9;fill:url(#ButtonShadow-3);fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter3174-0)" />
+ </g>
+ <g
+ id="g1017-7"
+ transform="matrix(3.5621042,0,0,4.2405982,10.209386,-149.73618)">
+ <path
+ inkscape:connector-curvature="0"
+ style="display:inline;overflow:visible;visibility:visible;opacity:0.5;fill:url(#radialGradient4030);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:104.96237946;marker:none"
+ id="path5058-0-2"
+ d="m 39.087163,39.586499 c 0,0 0,7.042675 0,7.042675 3.200171,0.01326 7.736457,-1.577906 7.736455,-3.52179 0,-1.943885 -3.57115,-3.520884 -7.736455,-3.520885 z" />
+ <rect
+ style="display:inline;overflow:visible;visibility:visible;opacity:0.5;fill:url(#linearGradient4032);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:104.96237946;marker:none"
+ id="rect4173-6-3"
+ y="39.58625"
+ x="9.0813398"
+ height="7.0430632"
+ width="30.005821" />
+ <path
+ inkscape:connector-curvature="0"
+ style="display:inline;overflow:visible;visibility:visible;opacity:0.5;fill:url(#radialGradient4034);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:104.96237946;marker:none"
+ id="path5018-7-4"
+ d="m 9.0813406,39.586499 c 0,0 0,7.042675 0,7.042675 -3.2001721,0.01326 -7.7364568,-1.577906 -7.7364568,-3.52179 0,-1.943885 3.57115,-3.520884 7.7364568,-3.520885 z" />
+ </g>
+ <g
+ id="g4574"
+ transform="matrix(6.8513602,0,0,6.831439,-103.74555,-218.3363)" />
+ <g
+ id="layer4"
+ transform="matrix(4.2631576,0,0,4.2666859,-239.91768,-919.20606)" />
+ <g
+ id="layer4-7"
+ transform="matrix(8.3199362,0,0,8.326822,-165.18157,-1850.407)" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3840);stroke-width:4.26492119;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect2996"
+ width="157.73683"
+ height="174.93413"
+ x="17.13158"
+ y="-141.86752"
+ ry="17.066744"
+ rx="17.052629" />
+ <path
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3453);stroke-width:4.21033764;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.50196078;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 174.86897,-16.000285 c 0,6.4000288 0,12.8000575 0,19.2000863 0,0 5e-4,4.2666859 -2.13083,8.5333717 -2.13133,4.266685 -6.39448,8.53337 -14.92179,8.533372 -41.21077,0 -82.421527,0 -123.632286,0 -8.659836,-4e-6 -12.92299,-4.266688 -15.021189,-8.533372 -2.0982,-4.2666858 -2.031442,-8.5333717 -2.031442,-8.5333717 2.16e-4,-6.4000288 4.32e-4,-12.8000575 6.48e-4,-19.2000863 -2.16e-4,6.4000288 -4.32e-4,12.8000575 -6.48e-4,19.2000863 0,0 -0.06676,4.2666859 2.031442,8.5333717 2.098199,4.266684 6.361353,8.533368 15.021176,8.533372 41.210772,0 82.421529,0 123.632289,0 8.52732,-2e-6 12.79047,-4.266687 14.9218,-8.533372 2.13133,-4.2666858 2.13083,-8.5333717 2.13083,-8.5333717 0,-6.4000288 0,-12.8000575 0,-19.2000863 z"
+ id="path4313"
+ inkscape:path-effect="#path-effect4315"
+ inkscape:original-d="m 174.86897,-16.000285 0,19.2000863 c 0,0 0.002,17.0667437 -17.05263,17.0667437 l -123.632276,0 c -17.319663,0 -17.052631,-17.0667437 -17.052631,-17.0667437 l 6.48e-4,-19.2000863"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0"
+ inkscape:original-d="m 174.86897,-24.533657 0,19.2000865 c 0,0 0.002,17.0667435 -17.05263,17.0667435 l -123.632276,0 c -17.319663,0 -17.052631,-17.0667435 -17.052631,-17.0667435 l 6.48e-4,-19.2000865"
+ inkscape:path-effect="#path-effect4352"
+ id="path4350"
+ d="m 174.86897,-24.533657 c 0,6.400029 0,12.800058 0,19.2000865 0,0 5e-4,4.2666859 -2.13083,8.5333717 -2.13133,4.2666849 -6.39448,8.5333698 -14.92179,8.5333718 -41.21077,0 -82.421527,0 -123.632286,0 -8.659836,-4e-6 -12.92299,-4.266688 -15.021189,-8.5333718 -2.0982,-4.2666858 -2.031442,-8.5333717 -2.031442,-8.5333717 2.16e-4,-6.4000285 4.32e-4,-12.8000575 6.48e-4,-19.2000865 -2.16e-4,6.400029 -4.32e-4,12.800058 -6.48e-4,19.2000865 0,0 -0.06676,4.2666859 2.031442,8.5333717 2.098199,4.2666838 6.361353,8.5333678 15.021176,8.5333718 41.210772,0 82.421529,0 123.632289,0 8.52732,-2e-6 12.79047,-4.2666869 14.9218,-8.5333718 2.13133,-4.2666858 2.13083,-8.5333717 2.13083,-8.5333717 0,-6.4000285 0,-12.8000575 0,-19.2000865 z"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3455);stroke-width:4.21033764;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.50196078;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <path
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient4332);stroke-width:4.21033764;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.50196078;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 174.87916,-7.4941734 c 0,7.11862847 0,14.2372569 0,21.3558854 0,0 -0.92095,3.734551 -3.51435,7.469102 -2.59339,3.734551 -6.85924,7.469101 -13.54902,7.469103 -41.32876,0.0091 -82.657509,0.0182 -123.986259,0.02731 -6.689792,-4e-6 -9.801202,-3.741355 -11.240167,-7.482707 -1.438966,-3.741353 -1.205484,-7.482706 -1.205484,-7.482706 2.1e-4,-7.1186284 4.2e-4,-14.2372568 6.3e-4,-21.3558852 -2.1e-4,7.1186284 -4.2e-4,14.2372568 -6.3e-4,21.3558852 0,0 -0.233482,3.741353 1.205484,7.482706 1.438965,3.741352 4.550375,7.482703 11.240157,7.482707 41.32876,-0.0091 82.657509,-0.0182 123.986259,-0.02731 6.68979,-2e-6 10.95564,-3.734552 13.54903,-7.469103 2.5934,-3.734551 3.51435,-7.469102 3.51435,-7.469102 0,-7.1186285 0,-14.23725693 0,-21.3558854 z"
+ id="path4342"
+ inkscape:path-effect="#path-effect4344"
+ inkscape:original-d="m 174.87916,-7.4941734 0,21.3558854 c 0,0 -3.6838,14.938205 -17.06338,14.938205 L 33.829531,28.827223 C 20.449953,28.827223 21.38388,13.86181 21.38388,13.86181 l 6.3e-4,-21.3558852"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc" />
+ <rect
+ ry="17.066744"
+ y="-141.86752"
+ x="17.13158"
+ height="145.06732"
+ width="157.73683"
+ id="rect3449"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient4317);stroke-width:4.26492119;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ rx="17.052629" />
+ <rect
+ ry="17.024317"
+ y="-141.8726"
+ x="17.126493"
+ height="145.0775"
+ width="157.74701"
+ id="rect4295"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient4297);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient4299);stroke-width:4.25474834;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
+ <path
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient3465);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3467);stroke-width:4.26492119;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 85.342102,3.1998013 c -17.05263,0 -34.105261,0 -51.157891,0 0,0 -4.263158,-0.1005755 -8.526312,1.7158093 -4.263161,1.8163879 -8.526318,5.5497384 -8.526318,13.2175914 0,7.600326 4.263158,11.333677 8.526315,13.166945 4.263159,1.833268 8.526312,1.766456 8.526315,1.766456 -34.184211,0 -34.184211,0 51.157891,0 -17.05263,0 -34.105261,0 -51.157891,0 -3e-6,0 -4.263156,0.06681 -8.52631,-1.766453 -4.263162,-1.833271 -8.52632,-5.566622 -8.52632,-13.166948 0,-7.667853 4.263157,-11.4012035 8.526315,-13.2175903 4.263157,-1.8163859 8.526315,-1.7158104 8.526315,-1.7158104 17.05263,0 34.105261,0 51.157891,0 z"
+ id="path4279"
+ inkscape:original-d="m 85.342102,3.1998013 -51.157891,0 c 0,0 -17.05263,-0.4023059 -17.05263,14.9334007 0,15.200653 17.05263,14.933401 17.05263,14.933401 l 51.157891,0"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc"
+ inkscape:path-effect="#path-effect4281" />
+ <path
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0"
+ inkscape:original-d="m 106.65789,-141.86752 51.15789,0 c 0,0 17.05263,-0.002 17.05263,17.06674 l 0,110.933838 c 0,17.3339957 -17.05263,17.0667433 -17.05263,17.0667433 L 87.458713,3.1991527"
+ id="path4319"
+ d="m 106.65789,-141.86752 c 17.05263,0 34.10526,0 51.15789,0 0,0 4.26316,-5e-4 8.52631,2.13259 4.26316,2.13309 8.52632,6.39978 8.52632,14.93414 0,36.977956 0,73.955902 0,110.933848 0,8.6670021 -4.26316,12.93368472 -8.52632,15.03362 -4.26315,2.0999364 -8.52631,2.0331233 -8.52631,2.0331233 -23.45236,-2.162e-4 -46.90471,-4.324e-4 -70.357067,-6.486e-4 23.452357,2.162e-4 46.904707,4.324e-4 70.357067,6.486e-4 0,0 4.26316,0.066813 8.52631,-2.0331233 4.26316,-2.09993528 8.52632,-6.3666179 8.52632,-15.033607 0,-36.977959 0,-73.955905 0,-110.933851 0,-8.53437 -4.26316,-12.80106 -8.52632,-14.93415 -4.26315,-2.13309 -8.52631,-2.13259 -8.52631,-2.13259 -17.05263,0 -34.10526,0 -51.15789,0 z"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4323);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient4325);stroke-width:4.26492119;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ inkscape:path-effect="#path-effect4321" />
+ <path
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#1c5a84;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 27.363159,3.1998013 -12.363157,-14.9334003 0,25.600115 12.363157,-10.6667147 z"
+ id="path4327"
+ inkscape:path-effect="#path-effect4329"
+ inkscape:original-d="m 27.363159,3.1998013 -12.363157,-14.9334003 0,25.600115 z"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#1c5a84;fill-opacity:1;fill-rule:nonzero;stroke:#1b5882;stroke-width:4.26492119;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ d="m 34.184211,-141.86752 12.789473,0 0,145.0673213 -12.789473,0 c -9.447157,0 -17.05263,-7.6117677 -17.05263,-17.0667433 l 0,-110.933838 c 0,-9.45497 7.605473,-17.06674 17.05263,-17.06674 z"
+ id="rect4333"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="sccssss" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:url(#linearGradient3469);stroke-width:4.26492119;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect3451"
+ width="149.21051"
+ height="136.53395"
+ x="21.394737"
+ y="-137.60083"
+ ry="12.800057"
+ rx="14.921052" />
+ <rect
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4388);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.50196078;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect4380"
+ width="4.2631574"
+ height="140.80063"
+ x="49.105263"
+ y="-139.73418" />
+ <path
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0"
+ id="path4245"
+ d="m 125.8421,13.866516 25.57894,0 0,34.133487 -12.78947,-12.800058 -12.78947,12.800058 z"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#363636;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.50196078;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <path
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4230);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.50196078;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 125.8421,9.5998301 25.57894,0 0,34.1334869 L 138.63157,30.93326 125.8421,43.733317 Z"
+ id="rect3421"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:1.41732287;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 110.50011,-118 a 46.500106,46.14368 0 0 0 -46.500112,46.143686 46.500106,46.14368 0 0 0 0.08636,2.617885 46.500106,46.14368 0 0 1 46.413622,-44.366931 46.500106,46.14368 0 0 1 46.41362,43.525797 A 46.500106,46.14368 0 0 0 157,-71.856314 46.500106,46.14368 0 0 0 110.49988,-118 Z m 7.24835,23.749936 c -1.80279,-0.24566 -3.67059,0.02197 -5.3368,0.746737 -1.66616,0.725862 -3.12251,1.915797 -4.16043,3.398987 -1.03798,1.483146 -1.65253,3.252734 -1.75589,5.055547 -0.0558,0.972181 0.07,1.938034 0.30291,2.88398 0.27723,-1.261481 0.71089,-2.484245 1.45316,-3.544889 1.03792,-1.483191 2.49426,-2.673126 4.16043,-3.398989 1.6662,-0.725862 3.534,-0.992353 5.33679,-0.746737 2.52598,0.344102 4.89948,1.697605 6.4699,3.690792 l 25.17025,0 -22.08238,-3.012742 c -0.26483,-0.499143 -0.64223,-0.927489 -0.97738,-1.381894 l -2.11049,0 c -1.57042,-1.993188 -3.94392,-3.346648 -6.4699,-3.690792 z m -34.86645,7.132672 c -0.699184,2.0831 -0.853831,4.329155 -0.510305,6.497557 0.119128,-0.722654 0.284315,-1.434234 0.518985,-2.128674 l 27.87757,15.509992 -27.88625,-19.878875 z m 21.80558,1.313248 c -0.24313,1.277916 -0.29228,2.591299 -0.11248,3.87963 0.33569,2.407513 1.42959,4.700415 3.08792,6.488988 -0.86168,-1.590464 -1.27114,-3.415819 -1.16773,-5.218632 0.009,-0.175345 0.0841,-0.340584 0.10362,-0.515006 -0.95714,-1.389453 -1.60367,-2.979739 -1.91155,-4.63498 z m -29.49506,0.575083 c -0.162086,1.411205 -0.212129,2.839242 -0.03543,4.248733 0.42293,3.353505 1.851856,6.555919 4.013402,9.166949 -0.01329,-0.533157 -0.02214,-1.065084 0.02657,-1.596528 l 4.532387,1.261745 c -0.03543,-0.06899 -0.05226,-0.145024 -0.08636,-0.214459 -1.542653,-0.940672 -2.969586,-2.070488 -4.160431,-3.424696 -2.321552,-2.63999 -3.821911,-5.968927 -4.290189,-9.441613 z m 46.11089,9.544623 c -0.003,0.01758 -0.004,0.03515 -0.009,0.05142 -0.61837,3.860952 0.54219,7.763345 1.69534,11.501555 0.73055,2.368314 1.41658,4.798723 1.71258,7.244294 0.009,-0.04922 0.0266,-0.09624 0.0354,-0.145901 0.58156,-3.866577 -0.59409,-7.754776 -1.74721,-11.492986 -0.72159,-2.339264 -1.39801,-4.741592 -1.68666,-7.158467 z m -42.106123,6.669168 c -0.237372,2.754382 0.3069,5.572047 1.556913,8.042537 1.250055,2.470489 3.202351,4.586549 5.570359,6.042624 3.515187,2.161503 7.942971,2.799779 11.936401,1.733816 -4.00025,0.02637 -7.964672,-1.935881 -10.336267,-5.132759 -0.07927,-0.10679 -0.140385,-0.225444 -0.216115,-0.334871 -0.462167,-0.22149 -0.947273,-0.392441 -1.383931,-0.660954 -2.367963,-1.456075 -4.320259,-3.572135 -5.570315,-6.042625 -0.568896,-1.124324 -0.967113,-2.332761 -1.236903,-3.562029 l -0.320186,-0.0857 z m 6.314183,0.09448 c 0.166958,1.615337 0.670178,3.191604 1.435835,4.62641 l 21.943975,3.562073 -18.899325,-5.27875 c -1.456693,-0.701868 -2.782832,-1.661173 -3.909595,-2.815293 l -0.57089,-0.09448 z m 45.05564,14.102345 c -0.45194,2.690132 -1.61346,5.268685 -3.28685,7.441701 -2.25047,2.922389 -5.37727,5.129771 -8.79663,6.549019 -2.55347,1.059855 -5.28223,1.658887 -8.04407,1.836826 -2.5072,0.6236 -5.10296,0.848209 -7.68084,0.66091 l -3.390615,7.982462 0,3.235903 A 46.500106,46.14368 0 0 0 99.809201,-27 l 3.451149,-8.128363 c 5.04783,1.142386 10.44685,0.677873 15.22325,-1.30468 3.41936,-1.419248 6.54615,-3.62663 8.79663,-6.549019 2.25047,-2.92239 3.58941,-6.571652 3.49446,-10.248425 -0.0133,-0.539309 -0.13817,-1.057964 -0.20771,-1.587913 z"
+ id="path4301"
+ inkscape:connector-curvature="0" />
+ <path
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:0.51020406;fill-rule:evenodd;stroke:none;stroke-width:1.41732287;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 156.91333,-68 c -0.96122,23.352824 -21.44904,41.828094 -46.41342,41.854254 -3.60184,-0.01658 -7.18951,-0.423488 -10.690817,-1.21458 l -0.441085,0.987849 0,-1.09311 c -19.795942,-4.572965 -34.10029,-20.685325 -35.281476,-39.740875 -0.03986,0.558141 -0.06909,1.116947 -0.08636,1.676125 C 64.000172,-41.489195 84.818891,-22 110.50009,-22 136.18128,-22 157,-41.489195 157,-65.530337 156.996,-66.35418 156.969,-67.17769 156.9136,-68 Z"
+ id="path4320"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccscc" />
+ <path
+ id="path5170"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:0.16326533;fill-rule:evenodd;stroke:none;stroke-width:1.41732287;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 116.54149,-96.833799 c -1.98945,0.0088 -3.97672,0.48378 -5.72702,1.379709 -2.15419,1.102683 -3.94018,2.839363 -5.04652,4.906967 -1.1063,2.067649 -1.52799,4.457156 -1.19213,6.752812 0.33569,2.295657 1.42768,4.487165 3.086,6.192649 -0.86162,-1.516592 -1.26989,-3.260796 -1.16648,-4.979831 0.10318,-1.719081 0.71835,-3.407977 1.75628,-4.82227 1.03796,-1.414247 2.49567,-2.549359 4.16183,-3.241523 1.6662,-0.692165 3.53594,-0.939049 5.33872,-0.704836 2.52592,0.328239 4.89763,1.618408 6.46805,3.519032 l 25.16438,0 -22.07945,-2.879317 c -1.83679,-3.300396 -5.47113,-5.644407 -9.38912,-6.055192 -0.4565,-0.04796 -0.91548,-0.0704 -1.37454,-0.0682 z m -39.569522,4.06934 c -1.617356,3.023461 -2.257062,6.507336 -1.812523,9.869817 0.444584,3.36248 1.971597,6.590013 4.326219,9.143243 1.317719,1.428813 2.896059,2.634809 4.634801,3.576893 l -4.923676,-1.309924 c -0.237371,2.626361 0.308671,5.312208 1.558589,7.667925 1.250006,2.355716 3.200611,4.373776 5.568608,5.762195 3.515171,2.061093 7.941653,2.677268 11.935065,1.660824 -4.000276,0.02641 -7.964549,-1.852928 -10.336089,-4.901291 -1.338178,-1.720093 -2.179473,-3.78268 -2.409935,-5.907397 l 23.377543,3.617681 -18.900044,-5.028409 c -1.512045,-0.694716 -2.893668,-1.644764 -4.046644,-2.802316 -1.594238,-1.600588 -2.752441,-3.587056 -3.333424,-5.7167 -0.66517,-2.438481 -0.566546,-5.058548 0.279443,-7.446297 l 27.876339,14.787653 -33.79445,-22.973897 z m 45.460302,11.547669 c -0.55166,1.082663 -0.9354,2.24158 -1.13482,3.428612 -0.61836,3.681569 0.5387,7.400712 1.69185,10.965284 1.15311,3.564529 2.32854,7.273684 1.74698,10.960621 -0.43444,2.754664 -1.85513,5.333284 -3.84293,7.38738 -1.98781,2.054052 -4.52444,3.59766 -7.25005,4.649084 -4.49136,1.73272 -9.54258,2.139765 -14.278968,1.150821 l 0,12.256112 3.894828,-8.748477 c 5.04777,1.089353 10.45163,0.648692 15.22806,-1.241724 3.41934,-1.353307 6.53962,-3.460291 8.79008,-6.2469 2.25042,-2.786608 3.59382,-6.269252 3.49887,-9.775217 -0.11425,-4.213748 -2.21897,-8.118836 -4.25576,-11.867548 -2.03683,-3.748668 -4.10045,-7.68394 -4.12308,-11.899052 -0.002,-0.34012 0.009,-0.679845 0.0354,-1.018996 z m 34.56755,11.216788 A 46.499907,44.000001 0 0 1 110.49991,-26 46.499907,44.000001 0 0 1 63.999998,-70.000002 46.499907,44.000001 0 0 1 110.49991,-114 a 46.499907,44.000001 0 0 1 46.49991,43.999998 z"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>

215
debian/patches/scaling-pr-1596.patch vendored Normal file
View File

@ -0,0 +1,215 @@
From c84434e576ec37208237f143ad5ef8f37ce25a24 Mon Sep 17 00:00:00 2001
From: tsujan <tsujan2000@gmail.com>
Date: Fri, 3 Jun 2022 05:16:58 +0430
Subject: [PATCH] Consider device pixel ratio when drawing wallpaper (#1596)
Previously, wallpapers weren't sharp with scale factors > 1.
Also, an old problem is fixed in centering per-screen wallpapers with multi-screen setups. Previously, if the centered wallpaper was smaller than the screen size, the dektop background color would be removed from the screen part to its right and bottom.
Fixes https://github.com/lxqt/pcmanfm-qt/issues/1595
---
pcmanfm/desktopwindow.cpp | 93 ++++++++++++++++++++++++---------------
1 file changed, 58 insertions(+), 35 deletions(-)
diff --git a/pcmanfm/desktopwindow.cpp b/pcmanfm/desktopwindow.cpp
index b0734582..d69b660e 100644
--- a/pcmanfm/desktopwindow.cpp
+++ b/pcmanfm/desktopwindow.cpp
@@ -644,88 +644,107 @@ QImage DesktopWindow::loadWallpaperFile(QSize requiredSize) {
// really generate the background pixmap according to current settings and apply it.
void DesktopWindow::updateWallpaper() {
if(wallpaperMode_ != WallpaperNone) { // use wallpaper
+ auto screen = getDesktopScreen();
+ if(screen == nullptr) {
+ return;
+ }
QPixmap pixmap;
QImage image;
Settings& settings = static_cast<Application* >(qApp)->settings();
- auto screen = getDesktopScreen();
- bool perScreenWallpaper(screen != nullptr && screen->virtualSiblings().size() > 1 && settings.perScreenWallpaper());
+ const auto screens = screen->virtualSiblings();
+ bool perScreenWallpaper(screens.size() > 1 && settings.perScreenWallpaper());
+
+ // the pixmap's size should be calculated by considering
+ // the positions and device pixel ratios of all screens
+ QRect pixmapRect;
+ for(const auto& scr : screens) {
+ pixmapRect |= QRect(scr->geometry().topLeft(), scr->size() * scr->devicePixelRatio());
+ }
+ const QSize pixmapSize = pixmapRect.size();
+
+ // the pixmap's device pixel ratio
+ qreal DPRatio = windowHandle() ? windowHandle()->devicePixelRatio() : qApp->devicePixelRatio();
+
if(wallpaperMode_ == WallpaperTile) { // use the original size
image = getWallpaperImage();
if(!image.isNull()) {
// Note: We can't use the QPainter::drawTiledPixmap(), because it doesn't tile
// correctly for background pixmaps bigger than the current screen size.
- const QSize s = size();
- pixmap = QPixmap{s};
+ pixmap = QPixmap{pixmapSize};
QPainter painter{&pixmap};
- for (int x = 0; x < s.width(); x += image.width()) {
- for (int y = 0; y < s.height(); y += image.height()) {
+ for (int x = 0; x < pixmapSize.width(); x += image.width()) {
+ for (int y = 0; y < pixmapSize.height(); y += image.height()) {
painter.drawImage(x, y, image);
}
}
+ pixmap.setDevicePixelRatio(DPRatio);
}
}
else if(wallpaperMode_ == WallpaperStretch) {
if(perScreenWallpaper) {
- const QSize s = size();
- pixmap = QPixmap{s};
+ pixmap = QPixmap{pixmapSize};
QPainter painter{&pixmap};
pixmap.fill(bgColor_);
image = getWallpaperImage();
if(!image.isNull()) {
QImage scaled;
- const auto screens = screen->virtualSiblings();
for(const auto& scr : screens) {
- scaled = image.scaled(scr->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+ scaled = image.scaled(scr->size() * scr->devicePixelRatio(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
painter.drawImage(scr->geometry().x(), scr->geometry().y(), scaled);
}
}
+ pixmap.setDevicePixelRatio(DPRatio);
}
else {
- image = loadWallpaperFile(size());
+ image = loadWallpaperFile(pixmapSize);
pixmap = QPixmap::fromImage(image);
+ pixmap.setDevicePixelRatio(DPRatio);
}
}
else { // WallpaperCenter || WallpaperFit
if(perScreenWallpaper) {
- const QSize s = size();
- pixmap = QPixmap{s};
+ pixmap = QPixmap{pixmapSize};
QPainter painter{&pixmap};
pixmap.fill(bgColor_);
image = getWallpaperImage();
if(!image.isNull()) {
QImage scaled;
int x, y;
- const auto screens = screen->virtualSiblings();
if(wallpaperMode_ == WallpaperCenter) {
for(const auto& scr : screens) {
+ const auto scrSize = scr->size() * scr->devicePixelRatio();
// get the gap between image and screen to avoid overlapping and displacement
- int x_gap = (image.width() - scr->geometry().width()) / 2;
- int y_gap = (image.height() - scr->geometry().height()) / 2;
- scaled = image.copy(qMax(x_gap, 0), qMax(y_gap, 0), scr->geometry().width(), scr->geometry().height());
+ int x_gap = (image.width() - scrSize.width()) / 2;
+ int y_gap = (image.height() - scrSize.height()) / 2;
+ scaled = image.copy(qMax(x_gap, 0), qMax(y_gap, 0), scrSize.width(), scrSize.height());
x = scr->geometry().x() + qMax(0, -x_gap);
- y = scr->geometry().y() + qMax(0, - y_gap);
+ y = scr->geometry().y() + qMax(0, -y_gap);
+ painter.save();
+ painter.setClipRect(QRect(x, y, image.width(), image.height()));
painter.drawImage(x, y, scaled);
+ painter.restore();
}
}
else if((wallpaperMode_ == WallpaperFit || wallpaperMode_ == WallpaperZoom)
&& image.width() > 0 && image.height() > 0) {
for(const auto& scr : screens) {
+ const auto scrSize = scr->size() * scr->devicePixelRatio();
// get the screen-to-image ratio to calculate the scale factors
- const qreal w_ratio = static_cast<qreal>(scr->geometry().width()) / image.width();
- const qreal h_ratio = static_cast<qreal>(scr->geometry().height()) / image.height();
+ const qreal w_ratio = static_cast<qreal>(scrSize.width()) / image.width();
+ const qreal h_ratio = static_cast<qreal>(scrSize.height()) / image.height();
if(w_ratio <= h_ratio) {
if(wallpaperMode_ == WallpaperFit) {
// fit horizontally
- scaled = image.scaledToWidth(scr->geometry().width(), Qt::SmoothTransformation);
+ scaled = image.scaledToWidth(scrSize.width(), Qt::SmoothTransformation);
x = scr->geometry().x();
- y = scr->geometry().y() + (scr->geometry().height() - scaled.height()) / 2;
+ y = scr->geometry().y() + (scrSize.height() - scaled.height()) / 2;
}
else { // zoom
// fit vertically
- scaled = image.scaledToHeight(scr->geometry().height(), Qt::SmoothTransformation);
+ scaled = image.scaledToHeight(scrSize.height(), Qt::SmoothTransformation);
// crop to avoid overlapping
- int x_gap = (scaled.width() - scr->geometry().width()) / 2;
- scaled = scaled.copy(x_gap, 0, scr->geometry().width(), scaled.height());
+ int x_gap = (scaled.width() - scrSize.width()) / 2;
+ scaled = scaled.copy(x_gap, 0, scrSize.width(), scaled.height());
x = scr->geometry().x();
y = scr->geometry().y();
}
@@ -733,16 +752,16 @@ void DesktopWindow::updateWallpaper() {
else { // w_ratio > h_ratio
if(wallpaperMode_ == WallpaperFit) {
// fit vertically
- scaled = image.scaledToHeight(scr->geometry().height(), Qt::SmoothTransformation);
- x = scr->geometry().x() + (scr->geometry().width() - scaled.width()) / 2;
+ scaled = image.scaledToHeight(scrSize.height(), Qt::SmoothTransformation);
+ x = scr->geometry().x() + (scrSize.width() - scaled.width()) / 2;
y = scr->geometry().y();
}
else { // zoom
// fit horizonatally
- scaled = image.scaledToWidth(scr->geometry().width(), Qt::SmoothTransformation);
+ scaled = image.scaledToWidth(scrSize.width(), Qt::SmoothTransformation);
// crop to avoid overlapping
- int y_gap = (scaled.height() - scr->geometry().height()) / 2;
- scaled = scaled.copy(0, y_gap, scaled.width(), scr->geometry().height());
+ int y_gap = (scaled.height() - scrSize.height()) / 2;
+ scaled = scaled.copy(0, y_gap, scaled.width(), scrSize.height());
x = scr->geometry().x();
y = scr->geometry().y();
}
@@ -751,6 +770,7 @@ void DesktopWindow::updateWallpaper() {
}
}
}
+ pixmap.setDevicePixelRatio(DPRatio);
}
else {
if(wallpaperMode_ == WallpaperCenter) {
@@ -770,17 +790,18 @@ void DesktopWindow::updateWallpaper() {
if(origSize.isValid()) {
QSize desiredSize = origSize;
Qt::AspectRatioMode mode = (wallpaperMode_ == WallpaperFit ? Qt::KeepAspectRatio : Qt::KeepAspectRatioByExpanding);
- desiredSize.scale(width(), height(), mode);
+ desiredSize.scale(pixmapSize, mode);
image = loadWallpaperFile(desiredSize); // load the scaled image
}
}
if(!image.isNull()) {
- pixmap = QPixmap(size());
+ pixmap = QPixmap{pixmapSize};
QPainter painter(&pixmap);
pixmap.fill(bgColor_);
- int x = (width() - image.width()) / 2;
- int y = (height() - image.height()) / 2;
+ int x = (pixmapSize.width() - image.width()) / 2;
+ int y = (pixmapSize.height() - image.height()) / 2;
painter.drawImage(x, y, image);
+ pixmap.setDevicePixelRatio(DPRatio);
}
}
}
@@ -1239,7 +1260,9 @@ void DesktopWindow::paintBackground(QPaintEvent* event) {
painter.fillRect(event->rect(), QBrush(bgColor_));
}
else {
- painter.drawPixmap(event->rect(), wallpaperPixmap_, event->rect());
+ QRectF r(QPointF(event->rect().topLeft()) * wallpaperPixmap_.devicePixelRatio(),
+ QSizeF(event->rect().size()) * wallpaperPixmap_.devicePixelRatio());
+ painter.drawPixmap(event->rect(), wallpaperPixmap_, r.toRect());
}
}

View File

@ -1 +1,4 @@
scaling-pr-1596.patch
add-manual.patch
upstream-pr-1601.patch
upstream-pr-1606.patch

91
debian/patches/upstream-pr-1601.patch vendored Normal file
View File

@ -0,0 +1,91 @@
From f1438b2b3eec8a1c60532ae5d9fcd654138dc5e4 Mon Sep 17 00:00:00 2001
From: tsujan <tsujan2000@gmail.com>
Date: Tue, 21 Jun 2022 11:14:03 +0430
Subject: [PATCH] Prevent an empty desktop path (#1601)
Fall back to `$HOME/Desktop` if `~/.config/user-dirs.dirs` doesn't exist or doesn't contain a desktop path. But if `~/.config/user-dirs.dirs` contains an empty desktop path, accept it.
See https://github.com/lxqt/lxqt-session/issues/439 for the story.
---
pcmanfm/desktoppreferencesdialog.cpp | 1 -
pcmanfm/xdgdir.cpp | 34 ++++++++++++++++------------
2 files changed, 20 insertions(+), 15 deletions(-)
diff --git a/pcmanfm/desktoppreferencesdialog.cpp b/pcmanfm/desktoppreferencesdialog.cpp
index b25f6435..465095c6 100644
--- a/pcmanfm/desktoppreferencesdialog.cpp
+++ b/pcmanfm/desktoppreferencesdialog.cpp
@@ -27,7 +27,6 @@
#include <QFile>
#include <QDir>
#include <QSaveFile>
-#include <QRegExp>
#include <QDebug>
#include <QStandardPaths>
#include <libfm-qt/filedialog.h>
diff --git a/pcmanfm/xdgdir.cpp b/pcmanfm/xdgdir.cpp
index 9fd9a7b0..edc5a848 100644
--- a/pcmanfm/xdgdir.cpp
+++ b/pcmanfm/xdgdir.cpp
@@ -18,10 +18,13 @@
#include "xdgdir.h"
#include <QStandardPaths>
+#include <QRegularExpression>
#include <QFile>
#include <QDir>
#include <QSaveFile>
+static const QRegularExpression desktopRegex(QStringLiteral("XDG_DESKTOP_DIR=\"([^\n]*)\""));
+
QString XdgDir::readUserDirsFile() {
QFile file(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation) + QStringLiteral("/user-dirs.dirs"));
if(file.open(QIODevice::ReadOnly | QIODevice::Text)) {
@@ -34,30 +37,33 @@ QString XdgDir::readUserDirsFile() {
QString XdgDir::readDesktopDir() {
QString str = readUserDirsFile();
- if(str.isEmpty())
- return QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + QStringLiteral("/Desktop");
- QRegExp reg(QStringLiteral("XDG_DESKTOP_DIR=\"([^\n]*)\""));
- if(reg.lastIndexIn(str) != -1) {
- str = reg.cap(1);
- if(str.startsWith(QStringLiteral("$HOME")))
- str = QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + str.mid(5);
- return str;
+ if(!str.isEmpty()) {
+ QRegularExpressionMatch match;
+ if(str.lastIndexOf(desktopRegex, -1, &match) != -1) {
+ str = match.captured(1);
+ if(str.startsWith(QStringLiteral("$HOME"))) {
+ str = QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + str.mid(5);
+ }
+ return str;
+ }
}
- return QString();
+ return QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + QStringLiteral("/Desktop");
}
void XdgDir::setDesktopDir(QString path) {
QString home = QStandardPaths::writableLocation(QStandardPaths::HomeLocation);
- if(path.startsWith(home))
+ if(path.startsWith(home)) {
path = QStringLiteral("$HOME") + path.mid(home.length());
+ }
QString str = readUserDirsFile();
- QRegExp reg(QStringLiteral("XDG_DESKTOP_DIR=\"([^\n]*)\""));
QString line = QStringLiteral("XDG_DESKTOP_DIR=\"") + path + QLatin1Char('\"');
- if(reg.indexIn(str) != -1)
- str.replace(reg, line);
+ if(str.contains(desktopRegex)) {
+ str.replace(desktopRegex, line);
+ }
else {
- if(!str.endsWith(QLatin1Char('\n')))
+ if(!str.endsWith(QLatin1Char('\n'))) {
str += QLatin1Char('\n');
+ }
str += line + QLatin1Char('\n');
}
QString dir = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation);

411
debian/patches/upstream-pr-1606.patch vendored Normal file
View File

@ -0,0 +1,411 @@
From 1151f49984ebc102c5238a9ba1d2b1a6769a1457 Mon Sep 17 00:00:00 2001
From: tsujan <tsujan2000@gmail.com>
Date: Tue, 21 Jun 2022 13:27:25 +0430
Subject: [PATCH] Allow customizing workspace margins on desktop (#1606)
It's especially useful with panels/docks that don't reserve space but auto-hide on overlapping windows.
---
pcmanfm/desktop-preferences.ui | 153 +++++++++++++++++++++------
pcmanfm/desktoppreferencesdialog.cpp | 10 ++
pcmanfm/desktopwindow.cpp | 34 ++++--
pcmanfm/settings.cpp | 14 +++
pcmanfm/settings.h | 9 ++
5 files changed, 183 insertions(+), 37 deletions(-)
diff --git a/pcmanfm/desktop-preferences.ui b/pcmanfm/desktop-preferences.ui
index d73e7312..c23f7bdb 100644
--- a/pcmanfm/desktop-preferences.ui
+++ b/pcmanfm/desktop-preferences.ui
@@ -136,6 +136,16 @@
<string>Spacing</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
+ <property name="verticalSpacing">
+ <number>10</number>
+ </property>
+ <item row="0" column="4">
+ <widget class="QCheckBox" name="lockMargins">
+ <property name="text">
+ <string>Lock</string>
+ </property>
+ </widget>
+ </item>
<item row="0" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
@@ -143,10 +153,24 @@
</property>
</widget>
</item>
- <item row="0" column="1">
- <widget class="QSpinBox" name="hMargin">
+ <item row="0" column="5">
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>5</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="0" column="3">
+ <widget class="QSpinBox" name="vMargin">
<property name="toolTip">
- <string>3 px by default.</string>
+ <string>1 px by default.
+A space is also reserved for 3 lines of text.</string>
</property>
<property name="suffix">
<string> px</string>
@@ -155,22 +179,14 @@
<number>48</number>
</property>
<property name="value">
- <number>3</number>
- </property>
- </widget>
- </item>
- <item row="0" column="2">
- <widget class="QLabel" name="label_8">
- <property name="text">
- <string>x</string>
+ <number>1</number>
</property>
</widget>
</item>
- <item row="0" column="3">
- <widget class="QSpinBox" name="vMargin">
+ <item row="0" column="1">
+ <widget class="QSpinBox" name="hMargin">
<property name="toolTip">
- <string>1 px by default.
-A space is also reserved for 3 lines of text.</string>
+ <string>3 px by default.</string>
</property>
<property name="suffix">
<string> px</string>
@@ -179,29 +195,104 @@ A space is also reserved for 3 lines of text.</string>
<number>48</number>
</property>
<property name="value">
- <number>1</number>
+ <number>3</number>
</property>
</widget>
</item>
- <item row="0" column="4">
- <widget class="QCheckBox" name="lockMargins">
+ <item row="0" column="2">
+ <widget class="QLabel" name="label_8">
<property name="text">
- <string>Lock</string>
+ <string>x</string>
</property>
</widget>
</item>
- <item row="0" column="5">
- <spacer name="horizontalSpacer">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>5</height>
- </size>
- </property>
- </spacer>
+ <item row="1" column="0" colspan="6" alignment="Qt::AlignLeft">
+ <widget class="QGroupBox" name="groupBox_7">
+ <layout class="QVBoxLayout" name="verticalLayout_6">
+ <property name="spacing">
+ <number>10</number>
+ </property>
+ <property name="leftMargin">
+ <number>5</number>
+ </property>
+ <property name="topMargin">
+ <number>5</number>
+ </property>
+ <property name="rightMargin">
+ <number>5</number>
+ </property>
+ <property name="bottomMargin">
+ <number>5</number>
+ </property>
+ <item alignment="Qt::AlignHCenter">
+ <widget class="QLabel" name="label_13">
+ <property name="text">
+ <string>Margins of work area:</string>
+ </property>
+ </widget>
+ </item>
+ <item alignment="Qt::AlignHCenter">
+ <widget class="QSpinBox" name="topMargin">
+ <property name="suffix">
+ <string> px</string>
+ </property>
+ <property name="maximum">
+ <number>200</number>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <widget class="QSpinBox" name="leftMargin">
+ <property name="suffix">
+ <string> px</string>
+ </property>
+ <property name="maximum">
+ <number>200</number>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_4">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::MinimumExpanding</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>5</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="rightMargin">
+ <property name="suffix">
+ <string> px</string>
+ </property>
+ <property name="maximum">
+ <number>200</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item alignment="Qt::AlignHCenter">
+ <widget class="QSpinBox" name="bottomMargin">
+ <property name="suffix">
+ <string> px</string>
+ </property>
+ <property name="maximum">
+ <number>200</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
</item>
</layout>
</widget>
diff --git a/pcmanfm/desktoppreferencesdialog.cpp b/pcmanfm/desktoppreferencesdialog.cpp
index 465095c6..04ac8bb8 100644
--- a/pcmanfm/desktoppreferencesdialog.cpp
+++ b/pcmanfm/desktoppreferencesdialog.cpp
@@ -128,6 +128,11 @@ DesktopPreferencesDialog::DesktopPreferencesDialog(QWidget* parent, Qt::WindowFl
ui.vMargin->setValue(settings.desktopCellMargins().height());
connect(ui.lockMargins, &QAbstractButton::clicked, this, &DesktopPreferencesDialog::lockMargins);
+ ui.leftMargin->setValue(settings.workAreaMargins().left());
+ ui.topMargin->setValue(settings.workAreaMargins().top());
+ ui.rightMargin->setValue(settings.workAreaMargins().right());
+ ui.bottomMargin->setValue(settings.workAreaMargins().bottom());
+
ui.defaultFileManager->setChecked(settings.openWithDefaultFileManager());
ui.allSticky->setChecked(settings.allSticky());
@@ -207,6 +212,11 @@ void DesktopPreferencesDialog::applySettings()
settings.setDesktopCellMargins(QSize(ui.hMargin->value(), ui.vMargin->value()));
+ settings.setWorkAreaMargins(QMargins(ui.leftMargin->value(),
+ ui.topMargin->value(),
+ ui.rightMargin->value(),
+ ui.bottomMargin->value()));
+
settings.setOpenWithDefaultFileManager(ui.defaultFileManager->isChecked());
settings.setAllSticky(ui.allSticky->isChecked());
diff --git a/pcmanfm/desktopwindow.cpp b/pcmanfm/desktopwindow.cpp
index d69b660e..b2870774 100644
--- a/pcmanfm/desktopwindow.cpp
+++ b/pcmanfm/desktopwindow.cpp
@@ -63,7 +63,6 @@
#include <xcb/xcb.h>
#include <X11/Xlib.h>
-#define WORK_AREA_MARGIN 12 // margin of the work area
#define MIN_SLIDE_INTERVAL 5*60000 // 5 min
#define MAX_SLIDE_INTERVAL (24*60+55)*60000 // 24 h and 55 min
@@ -1203,8 +1202,13 @@ void DesktopWindow::removeBottomGap() {
auto itemSize = delegate->itemSize();
//qDebug() << "delegate:" << delegate->itemSize();
QSize cellMargins = getMargins();
+ Settings& settings = static_cast<Application* >(qApp)->settings();
int workAreaHeight = screen->availableVirtualGeometry().height()
- - 2 * WORK_AREA_MARGIN;
+ - settings.workAreaMargins().top()
+ - settings.workAreaMargins().bottom();
+ if(workAreaHeight <= 0) {
+ return;
+ }
int cellHeight = itemSize.height() + listView_->spacing();
int iconNumber = workAreaHeight / cellHeight;
int bottomGap = workAreaHeight % cellHeight;
@@ -1219,7 +1223,6 @@ void DesktopWindow::removeBottomGap() {
qreal exactNumber = (static_cast<qreal>(cellHeight) - static_cast<qreal>(bottomGap))
/ (2 * static_cast<qreal>(iconNumber) + static_cast<qreal>(2));
int subtrahend = (int)exactNumber + ((int)exactNumber == exactNumber ? 0 : 1);
- Settings& settings = static_cast<Application*>(qApp)->settings();
int minCellHeight = settings.desktopCellMargins().height();
if(subtrahend > 0
&& cellMargins.height() - subtrahend >= minCellHeight) {
@@ -1301,11 +1304,18 @@ void DesktopWindow::trustOurDesktopShortcut(std::shared_ptr<const Fm::FileInfo>
QRect DesktopWindow::getWorkArea(QScreen* screen) const {
QRect workArea = screen->availableVirtualGeometry();
- workArea.adjust(WORK_AREA_MARGIN, WORK_AREA_MARGIN, -WORK_AREA_MARGIN, -WORK_AREA_MARGIN);
+ QMargins margins = static_cast<Application* >(qApp)->settings().workAreaMargins();
// switch between right and left with RTL to use the usual (LTR) calculations later
if(layoutDirection() == Qt::RightToLeft) {
+ int right = margins.right();
+ margins.setRight(margins.left());
+ margins.setLeft(right);
+ workArea = workArea.marginsRemoved(margins);
workArea.moveLeft(rect().right() - workArea.right());
}
+ else {
+ workArea = workArea.marginsRemoved(margins);
+ }
return workArea;
}
@@ -1709,6 +1719,9 @@ QModelIndex DesktopWindow::navigateWithKey(int key, Qt::KeyboardModifiers modifi
QRect workArea = getWorkArea(screen);
int columns = workArea.width() / (itemSize.width() + listView_->spacing());
int rows = workArea.height() / (itemSize.height() + listView_->spacing());
+ if(columns <= 0 || rows <= 0) {
+ break;
+ }
bool rtl(layoutDirection() == Qt::RightToLeft);
while(!index.isValid() && workArea.contains(pos)) {
switch(key) {
@@ -1971,7 +1984,7 @@ void DesktopWindow::childDropEvent(QDropEvent* e) {
// move selected items to the drop position, preserving their relative positions
QPoint dropPos = e->pos();
- if(curIndx.isValid()) {
+ if(curIndx.isValid() && !workArea.isEmpty()) {
QPoint curPoint = listView_->visualRect(curIndx).topLeft();
// first move the current item to the drop position
@@ -2050,7 +2063,8 @@ void DesktopWindow::childDropEvent(QDropEvent* e) {
}
// position dropped items successively, starting with the drop rectangle
- if(mimeData->hasUrls()
+ if(!workArea.isEmpty()
+ && mimeData->hasUrls()
&& (e->dropAction() == Qt::CopyAction
|| e->dropAction() == Qt::MoveAction
|| e->dropAction() == Qt::LinkAction)) {
@@ -2079,6 +2093,10 @@ void DesktopWindow::childDropEvent(QDropEvent* e) {
// until it reaches the last cell and then puts the remaining items in the opposite
// direction. In this way, it creates a natural DND, especially with multiple files.
bool DesktopWindow::stickToPosition(const std::string& file, QPoint& pos, const QRect& workArea, const QSize& grid, bool reachedLastCell) {
+ if(workArea.isEmpty()) {
+ return reachedLastCell;
+ }
+
// normalize the position, depending on the positioning direction
if(!reachedLastCell) { // default direction: top -> bottom, left -> right
@@ -2178,6 +2196,10 @@ void DesktopWindow::alignToGrid(QPoint& pos, const QPoint& topLeft, const QSize&
// the text or icon rectangle but we make an exception for Trash because we want
// to trash dropped items once the drop point is inside the Trash cell.
QModelIndex DesktopWindow::indexForPos(bool* isTrash, const QPoint& pos, const QRect& workArea, const QSize& grid) const {
+ if(workArea.isEmpty()) {
+ return QModelIndex();
+ }
+
// first normalize the position
QPoint p(pos);
diff --git a/pcmanfm/settings.cpp b/pcmanfm/settings.cpp
index c5ccc00f..b1397cab 100644
--- a/pcmanfm/settings.cpp
+++ b/pcmanfm/settings.cpp
@@ -134,6 +134,7 @@ Settings::Settings():
templateRunApp_(false),
folderViewCellMargins_(QSize(3, 3)),
desktopCellMargins_(QSize(3, 1)),
+ workAreaMargins_(QMargins(12, 12, 12, 12)),
openWithDefaultFileManager_(false),
allSticky_(false),
searchNameCaseInsensitive_(false),
@@ -269,6 +270,14 @@ bool Settings::loadFile(QString filePath) {
desktopCellMargins_ = (settings.value(QStringLiteral("DesktopCellMargins"), QSize(3, 1)).toSize()
.expandedTo(QSize(0, 0))).boundedTo(QSize(48, 48));
+ auto l = settings.value(QStringLiteral("WorkAreaMargins")).toList();
+ if(l.size() >= 4) {
+ workAreaMargins_.setLeft(qBound(0, l.at(0).toInt(), 200));
+ workAreaMargins_.setTop(qBound(0, l.at(1).toInt(), 200));
+ workAreaMargins_.setRight(qBound(0, l.at(2).toInt(), 200));
+ workAreaMargins_.setBottom(qBound(0, l.at(3).toInt(), 200));
+ }
+
openWithDefaultFileManager_ = settings.value(QStringLiteral("OpenWithDefaultFileManager"), false).toBool();
allSticky_ = settings.value(QStringLiteral("AllSticky"), false).toBool();
settings.endGroup();
@@ -416,6 +425,11 @@ bool Settings::saveFile(QString filePath) {
settings.setValue(QStringLiteral("SortFolderFirst"), desktopSortFolderFirst_);
settings.setValue(QStringLiteral("SortHiddenLast"), desktopSortHiddenLast_);
settings.setValue(QStringLiteral("DesktopCellMargins"), desktopCellMargins_);
+ QList<QVariant> l{workAreaMargins_.left(),
+ workAreaMargins_.top(),
+ workAreaMargins_.right(),
+ workAreaMargins_.bottom()};
+ settings.setValue(QStringLiteral("WorkAreaMargins"), l);
settings.setValue(QStringLiteral("OpenWithDefaultFileManager"), openWithDefaultFileManager_);
settings.setValue(QStringLiteral("AllSticky"), allSticky_);
settings.endGroup();
diff --git a/pcmanfm/settings.h b/pcmanfm/settings.h
index 63c92b71..e9641b18 100644
--- a/pcmanfm/settings.h
+++ b/pcmanfm/settings.h
@@ -788,6 +788,14 @@ class Settings : public QObject {
desktopCellMargins_ = size;
}
+ QMargins workAreaMargins() const {
+ return workAreaMargins_;
+ }
+
+ void setWorkAreaMargins(QMargins margins) {
+ workAreaMargins_ = margins;
+ }
+
bool openWithDefaultFileManager() const {
return openWithDefaultFileManager_;
}
@@ -1145,6 +1153,7 @@ class Settings : public QObject {
QSize folderViewCellMargins_;
QSize desktopCellMargins_;
+ QMargins workAreaMargins_;
bool openWithDefaultFileManager_;

View File

@ -1,8 +1,6 @@
etc/xdg/autostart/lxqt-desktop.desktop
icons/lubuntu-manual.svg usr/share/icons/hicolor/scalable/apps/
usr/bin/pcmanfm-qt
usr/share/applications/pcmanfm-qt-desktop-pref.desktop
usr/share/applications/pcmanfm-qt.desktop
usr/share/icons/hicolor/scalable/apps/pcmanfm-qt.svg
usr/share/man/man1/pcmanfm-qt.1
usr/share/pcmanfm-qt/lxqt/settings.conf

View File

@ -1,6 +0,0 @@
# This is expected
pcmanfm-qt: desktop-entry-lacks-keywords-entry [usr/share/applications/pcmanfm-qt-desktop-pref.desktop]
pcmanfm-qt: desktop-entry-lacks-keywords-entry [usr/share/applications/pcmanfm-qt.desktop]
# False positive
pcmanfm-qt: hardening-no-fortify-functions [usr/bin/pcmanfm-qt]

1
debian/rules vendored
View File

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

View File

@ -1,6 +0,0 @@
# We add this via quilt patch
pcmanfm-qt source: superfluous-file-pattern icons/lubuntu-manual.svg [debian/copyright:*]
# These are expected
pcmanfm-qt source: very-long-line-length-in-source-file * > 512 [debian/patches/add-manual.patch:*]
pcmanfm-qt source: very-long-line-length-in-source-file * > 512 [*.ts:*]

View File

@ -1,52 +1,52 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
sw==
=gSIv
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
sw==
=gSIv
-----END PGP PUBLIC KEY BLOCK-----

6
debian/watch vendored
View File

@ -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/pcmanfm-qt/releases .*/pcmanfm-qt-([\d\.]+).tar.xz