mirror of
https://git.outfoxxed.me/quickshell/quickshell.git
synced 2025-11-04 19:04:56 +11:00
core/desktopentry: handle string escape sequences
Some checks failed
Build / Nix (push) Has been cancelled
Build / Nix-1 (push) Has been cancelled
Build / Nix-2 (push) Has been cancelled
Build / Nix-3 (push) Has been cancelled
Build / Nix-4 (push) Has been cancelled
Build / Nix-5 (push) Has been cancelled
Build / Nix-6 (push) Has been cancelled
Build / Nix-7 (push) Has been cancelled
Build / Nix-8 (push) Has been cancelled
Build / Nix-9 (push) Has been cancelled
Build / Nix-10 (push) Has been cancelled
Build / Nix-11 (push) Has been cancelled
Build / Nix-12 (push) Has been cancelled
Build / Nix-13 (push) Has been cancelled
Build / Nix-14 (push) Has been cancelled
Build / Nix-15 (push) Has been cancelled
Build / Nix-16 (push) Has been cancelled
Build / Nix-17 (push) Has been cancelled
Build / Nix-18 (push) Has been cancelled
Build / Nix-19 (push) Has been cancelled
Build / Nix-20 (push) Has been cancelled
Build / Nix-21 (push) Has been cancelled
Build / Nix-22 (push) Has been cancelled
Build / Nix-23 (push) Has been cancelled
Build / Nix-24 (push) Has been cancelled
Build / Nix-25 (push) Has been cancelled
Build / Nix-26 (push) Has been cancelled
Build / Nix-27 (push) Has been cancelled
Build / Nix-28 (push) Has been cancelled
Build / Nix-29 (push) Has been cancelled
Build / Archlinux (push) Has been cancelled
Lint / Lint (push) Has been cancelled
Some checks failed
Build / Nix (push) Has been cancelled
Build / Nix-1 (push) Has been cancelled
Build / Nix-2 (push) Has been cancelled
Build / Nix-3 (push) Has been cancelled
Build / Nix-4 (push) Has been cancelled
Build / Nix-5 (push) Has been cancelled
Build / Nix-6 (push) Has been cancelled
Build / Nix-7 (push) Has been cancelled
Build / Nix-8 (push) Has been cancelled
Build / Nix-9 (push) Has been cancelled
Build / Nix-10 (push) Has been cancelled
Build / Nix-11 (push) Has been cancelled
Build / Nix-12 (push) Has been cancelled
Build / Nix-13 (push) Has been cancelled
Build / Nix-14 (push) Has been cancelled
Build / Nix-15 (push) Has been cancelled
Build / Nix-16 (push) Has been cancelled
Build / Nix-17 (push) Has been cancelled
Build / Nix-18 (push) Has been cancelled
Build / Nix-19 (push) Has been cancelled
Build / Nix-20 (push) Has been cancelled
Build / Nix-21 (push) Has been cancelled
Build / Nix-22 (push) Has been cancelled
Build / Nix-23 (push) Has been cancelled
Build / Nix-24 (push) Has been cancelled
Build / Nix-25 (push) Has been cancelled
Build / Nix-26 (push) Has been cancelled
Build / Nix-27 (push) Has been cancelled
Build / Nix-28 (push) Has been cancelled
Build / Nix-29 (push) Has been cancelled
Build / Archlinux (push) Has been cancelled
Lint / Lint (push) Has been cancelled
This commit is contained in:
parent
3e2ce40b18
commit
1b147a2c78
2 changed files with 13 additions and 6 deletions
|
|
@ -22,3 +22,4 @@ set shell id.
|
||||||
## Bug Fixes
|
## Bug Fixes
|
||||||
|
|
||||||
- Fixed volume control breaking with pipewire pro audio mode.
|
- Fixed volume control breaking with pipewire pro audio mode.
|
||||||
|
- Fixed escape sequence handling in desktop entries.
|
||||||
|
|
|
||||||
|
|
@ -269,16 +269,22 @@ QVector<QString> DesktopEntry::parseExecString(const QString& execString) {
|
||||||
currentArgument += '\\';
|
currentArgument += '\\';
|
||||||
escape = 0;
|
escape = 0;
|
||||||
}
|
}
|
||||||
|
} else if (escape == 2) {
|
||||||
|
currentArgument += c;
|
||||||
|
escape = 0;
|
||||||
} else if (escape != 0) {
|
} else if (escape != 0) {
|
||||||
if (escape != 2) {
|
switch (c.unicode()) {
|
||||||
// Technically this is an illegal state, but the spec has a terrible double escape
|
case 's': currentArgument += u' '; break;
|
||||||
// rule in strings for no discernable reason. Assuming someone might understandably
|
case 'n': currentArgument += u'\n'; break;
|
||||||
// misunderstand it, treat it as a normal escape and log it.
|
case 't': currentArgument += u'\t'; break;
|
||||||
|
case 'r': currentArgument += u'\r'; break;
|
||||||
|
case '\\': currentArgument += u'\\'; break;
|
||||||
|
default:
|
||||||
qCWarning(logDesktopEntry).noquote()
|
qCWarning(logDesktopEntry).noquote()
|
||||||
<< "Illegal escape sequence in desktop entry exec string:" << execString;
|
<< "Illegal escape sequence in desktop entry exec string:" << execString;
|
||||||
|
currentArgument += c;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
currentArgument += c;
|
|
||||||
escape = 0;
|
escape = 0;
|
||||||
} else if (c == u'"' || c == u'\'') {
|
} else if (c == u'"' || c == u'\'') {
|
||||||
parsingString = false;
|
parsingString = false;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue