37 lines
1.8 KiB
Diff
37 lines
1.8 KiB
Diff
|
Ensure that the correct `app_id` for Wayland is set. The upstream implementation
|
||
|
uses `QFileInfo::baseName()`[1] which strips everything away after the first dot.
|
||
|
This means that `.foo-wrapped` has an empty `app_id` because `baseName` returns
|
||
|
an empty string in this case.
|
||
|
|
||
|
The patch basically checks whether the program has the form `.foo-wrapped` (i.e. got
|
||
|
wrapped by `makeWrapper`) and if that's the case, `foo` will be the correct `app_id`.
|
||
|
|
||
|
[1] https://doc.qt.io/qt-5/qfileinfo.html#baseName
|
||
|
|
||
|
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||
|
index ba881cb..b3fd031 100644
|
||
|
--- a/src/client/qwaylandwindow.cpp
|
||
|
+++ b/src/client/qwaylandwindow.cpp
|
||
|
@@ -167,7 +167,20 @@ void QWaylandWindow::initWindow()
|
||
|
Qt::SkipEmptyParts);
|
||
|
|
||
|
if (domainName.isEmpty()) {
|
||
|
- mShellSurface->setAppId(fi.baseName());
|
||
|
+ auto baseName = fi.baseName();
|
||
|
+ if (baseName.isEmpty()) {
|
||
|
+ auto fileName = fi.fileName();
|
||
|
+ if (fileName.endsWith("-wrapped") && fileName.startsWith(".")) {
|
||
|
+ do {
|
||
|
+ auto len = fileName.length();
|
||
|
+ fileName = fileName.right(len - 1);
|
||
|
+ fileName = fileName.left(len - 9);
|
||
|
+ } while (fileName.endsWith("-wrapped") && fileName.startsWith("."));
|
||
|
+ mShellSurface->setAppId(fileName);
|
||
|
+ }
|
||
|
+ } else {
|
||
|
+ mShellSurface->setAppId(baseName);
|
||
|
+ }
|
||
|
} else {
|
||
|
QString appId;
|
||
|
for (int i = 0; i < domainName.count(); ++i)
|