You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
2.7 KiB
70 lines
2.7 KiB
3 years ago
|
From 1be046edd455969b74417ded6871d25eba8a1112 Mon Sep 17 00:00:00 2001
|
||
|
From: David Edmundson <kde@davidedmundson.co.uk>
|
||
|
Date: Mon, 27 Jun 2022 17:12:09 +0200
|
||
|
Subject: [PATCH] Disable toplevel fixed positions on Wayland
|
||
|
|
||
|
Given that the wayland protocol does not have window positions a recent
|
||
|
change to Qt development branch avoids having a mismatch of positions
|
||
|
and tells client code the window is at the topleft of the screen. This
|
||
|
fixes multiple bugs.
|
||
|
|
||
|
Unfortuantely this breaks a few usages within plasma where a
|
||
|
side-channel sends that absolute positional information over a bespoke
|
||
|
protocol. Currently we proxy this all through QWindow geometry where the
|
||
|
new Qt behaviour will throw is askew.
|
||
|
|
||
|
Whilst our longterm plans are to find future options away from the
|
||
|
plasmashell protocol we may as well have our Qt6
|
||
|
build work given the patch is trivial and harmless.
|
||
|
|
||
|
It also allows for potential backporting if our software is
|
||
|
already secured against issues.
|
||
|
---
|
||
|
krunner/main.cpp | 2 ++
|
||
|
shell/main.cpp | 3 +++
|
||
|
2 files changed, 5 insertions(+)
|
||
|
|
||
|
diff --git a/krunner/main.cpp b/krunner/main.cpp
|
||
|
index a05402a01..f19382cad 100644
|
||
|
--- a/krunner/main.cpp
|
||
|
+++ b/krunner/main.cpp
|
||
|
@@ -34,6 +34,7 @@ int main(int argc, char **argv)
|
||
|
QCoreApplication::setAttribute(Qt::AA_DisableHighDpiScaling);
|
||
|
}
|
||
|
|
||
|
+ qputenv("QT_WAYLAND_DISABLE_FIXED_POSITIONS", {});
|
||
|
const bool qpaVariable = qEnvironmentVariableIsSet("QT_QPA_PLATFORM");
|
||
|
KWorkSpace::detectPlatform(argc, argv);
|
||
|
QQuickWindow::setDefaultAlphaBuffer(true);
|
||
|
@@ -42,6 +43,7 @@ int main(int argc, char **argv)
|
||
|
// don't leak the env variable to processes we start
|
||
|
qunsetenv("QT_QPA_PLATFORM");
|
||
|
}
|
||
|
+ qunsetenv("QT_WAYLAND_DISABLE_FIXED_POSITIONS");
|
||
|
KLocalizedString::setApplicationDomain("krunner");
|
||
|
|
||
|
// TODO: Make it a QGuiApplication once we don't depend on KDELibs4Support
|
||
|
diff --git a/shell/main.cpp b/shell/main.cpp
|
||
|
index 26e4ecede..147483df4 100644
|
||
|
--- a/shell/main.cpp
|
||
|
+++ b/shell/main.cpp
|
||
|
@@ -79,6 +79,7 @@ int main(int argc, char *argv[])
|
||
|
|
||
|
oldCategoryFilter = QLoggingCategory::installFilter(filterConnectionSyntaxWarning);
|
||
|
|
||
|
+ qputenv("QT_WAYLAND_DISABLE_FIXED_POSITIONS", {});
|
||
|
const bool qpaVariable = qEnvironmentVariableIsSet("QT_QPA_PLATFORM");
|
||
|
KWorkSpace::detectPlatform(argc, argv);
|
||
|
QApplication app(argc, argv);
|
||
|
@@ -86,6 +87,8 @@ int main(int argc, char *argv[])
|
||
|
// don't leak the env variable to processes we start
|
||
|
qunsetenv("QT_QPA_PLATFORM");
|
||
|
}
|
||
|
+ qunsetenv("QT_WAYLAND_DISABLE_FIXED_POSITIONS");
|
||
|
+
|
||
|
KLocalizedString::setApplicationDomain("plasmashell");
|
||
|
|
||
|
// The executable's path is added to the library/plugin paths.
|
||
|
--
|
||
|
GitLab
|