parent
2821aac388
commit
6ade7ae79c
@ -1,2 +1,3 @@
|
|||||||
scaling-pr-1596.patch
|
scaling-pr-1596.patch
|
||||||
add-manual.patch
|
add-manual.patch
|
||||||
|
upstream-pr-1601.patch
|
||||||
|
@ -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);
|
Loading…
Reference in new issue