From d0a5866f6fb31b4642421b1003d6d3abfd7a94ea Mon Sep 17 00:00:00 2001 From: David Edmundson Date: Thu, 1 Jun 2023 23:15:44 +0100 Subject: [PATCH] qgenericunixservices: Move x11 specific code to the Xcb backend QGenericUnixServices is an abstract class subclassed by the wayland backend for wayland specific functionality. This moves to a consistent pattern where X11 code is also the X11 backend rather than guarded with if statements. Change-Id: I1cc7ebac811463451d744fdc034f5ad5fd022bc6 Reviewed-by: Liang Qi --- src/gui/platform/unix/qgenericunixservices.cpp | 4 +--- src/plugins/platforms/xcb/qxcbintegration.cpp | 14 +++++++++++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/gui/platform/unix/qgenericunixservices.cpp b/src/gui/platform/unix/qgenericunixservices.cpp index 34d9c37e246..88968413563 100644 --- a/src/gui/platform/unix/qgenericunixservices.cpp +++ b/src/gui/platform/unix/qgenericunixservices.cpp @@ -554,9 +554,7 @@ QPlatformServiceColorPicker *QGenericUnixServices::colorPicker(QWindow *parent) QString QGenericUnixServices::portalWindowIdentifier(QWindow *window) { - if (QGuiApplication::platformName() == QLatin1String("xcb")) - return "x11:"_L1 + QString::number(window->winId(), 16); - + Q_UNUSED(window); return QString(); } diff --git a/src/plugins/platforms/xcb/qxcbintegration.cpp b/src/plugins/platforms/xcb/qxcbintegration.cpp index d25b059852e..8fe5d0b1cd4 100644 --- a/src/plugins/platforms/xcb/qxcbintegration.cpp +++ b/src/plugins/platforms/xcb/qxcbintegration.cpp @@ -93,10 +93,17 @@ static bool runningUnderDebugger() #endif } +class QXcbUnixServices : public QGenericUnixServices +{ +public: + QString portalWindowIdentifier(QWindow *window) override; +}; + + QXcbIntegration *QXcbIntegration::m_instance = nullptr; QXcbIntegration::QXcbIntegration(const QStringList ¶meters, int &argc, char **argv) - : m_services(new QGenericUnixServices) + : m_services(new QXcbUnixServices) , m_instanceName(nullptr) , m_canGrab(true) , m_defaultVisualId(UINT_MAX) @@ -593,4 +600,9 @@ void QXcbIntegration::setApplicationBadge(qint64 number) unixServices->setApplicationBadge(number); } +QString QXcbUnixServices::portalWindowIdentifier(QWindow *window) +{ + return "x11:"_L1 + QString::number(window->winId(), 16); +} + QT_END_NAMESPACE