From 229e09386f7fa682832aad1eb22509f3178617a1 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Wed, 20 Jul 2022 09:54:36 +0200 Subject: [PATCH] Disable toplevel fixed positions on Wayland --- ...-toplevel-fixed-positions-on-wayland.patch | 69 +++++++++++++++++++ plasma-workspace.spec | 7 +- 2 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 disable-toplevel-fixed-positions-on-wayland.patch diff --git a/disable-toplevel-fixed-positions-on-wayland.patch b/disable-toplevel-fixed-positions-on-wayland.patch new file mode 100644 index 0000000..9de628e --- /dev/null +++ b/disable-toplevel-fixed-positions-on-wayland.patch @@ -0,0 +1,69 @@ +From 1be046edd455969b74417ded6871d25eba8a1112 Mon Sep 17 00:00:00 2001 +From: David Edmundson +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 diff --git a/plasma-workspace.spec b/plasma-workspace.spec index 896362e..c0418e4 100644 --- a/plasma-workspace.spec +++ b/plasma-workspace.spec @@ -28,7 +28,7 @@ Name: plasma-workspace Summary: Plasma workspace, applications and applets Version: 5.25.3.1 -Release: 2%{?dist} +Release: 3%{?dist} License: GPLv2+ URL: https://invent.kde.org/plasma/%{name} @@ -63,6 +63,8 @@ Source40: ssh-agent.conf Source41: spice-vdagent.conf ## upstream Patches (master branch) +# https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/1879 +Patch50: disable-toplevel-fixed-positions-on-wayland.patch ## upstreamable Patches @@ -771,6 +773,9 @@ fi %changelog +* Wed Jul 20 2022 Jan Grulich - 5.25.3.1-3 +- Disable toplevel fixed positions on Wayland + * Thu Jul 14 2022 Jan Grulich - 5.25.3.1-2 - Rebuild (qt5)