When activating, also try token from XDG_ACTIVATION_TOKEN

This matches upstream QWaylandXdgSurface behavior.

It also makes various activation magic e.g. KDBusService work.


(cherry picked from commit f599e829ad)

Co-authored-by: Kai Uwe Broulik <kde@privat.broulik.de>
This commit is contained in:
Kai Uwe Broulik
2025-07-31 07:48:11 +00:00
parent 17be829bb1
commit 435754d5ed

View File

@ -211,6 +211,10 @@ bool QWaylandLayerSurface::requestActivate()
activation->activate(m_activationToken, window()->wlSurface()); activation->activate(m_activationToken, window()->wlSurface());
m_activationToken = {}; m_activationToken = {};
return true; return true;
} else if (const auto token = qEnvironmentVariable("XDG_ACTIVATION_TOKEN"); !token.isEmpty()) {
activation->activate(token, window()->wlSurface());
qunsetenv("XDG_ACTIVATION_TOKEN");
return true;
} else { } else {
const auto focusWindow = QGuiApplication::focusWindow(); const auto focusWindow = QGuiApplication::focusWindow();
const auto wlWindow = focusWindow ? static_cast<QtWaylandClient::QWaylandWindow *>(focusWindow->handle()) : window(); const auto wlWindow = focusWindow ? static_cast<QtWaylandClient::QWaylandWindow *>(focusWindow->handle()) : window();