Commit 2e6ef9ff authored by David Edmundson's avatar David Edmundson
Browse files

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.


(cherry picked from commit 1be046ed)
parent 2fdaebc0
Pipeline #210276 passed with stage
in 8 minutes and 42 seconds
......@@ -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
......
......@@ -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.
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment