parent
af7d7497b5
commit
229e09386f
@ -0,0 +1,69 @@
|
||||
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
|
Loading…
Reference in new issue