From b3cd75fde79adda9c58b9ac865ca8d5200d1cb94 Mon Sep 17 00:00:00 2001 From: Liang Qi Date: Fri, 6 Oct 2023 14:01:15 +0200 Subject: [PATCH] a11y: fix the build without xcb headers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This amends 6802065da8706f1fc298a56b9f66ab8a815400d3 . Pure Wayland runtime and build envs without X11/xcb are more common. Need to find solution for ATSPI_MODIFIER_SHIFTLOCK on Wayland later. Pick-to: 6.5 Task-number: QTBUG-117535 Change-Id: I65d41546e3dbb86c3a939a496ed43ac1737cf539 Reviewed-by: Tor Arne Vestbø (cherry picked from commit 2ad3da8fce1bd31c3b4e970a505a051b7104765a) Reviewed-by: Qt Cherry-pick Bot --- .../accessible/linux/qspiapplicationadaptor.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/gui/accessible/linux/qspiapplicationadaptor.cpp b/src/gui/accessible/linux/qspiapplicationadaptor.cpp index 963490d0565..37d76489847 100644 --- a/src/gui/accessible/linux/qspiapplicationadaptor.cpp +++ b/src/gui/accessible/linux/qspiapplicationadaptor.cpp @@ -12,12 +12,16 @@ #include "deviceeventcontroller_adaptor.h" #include "atspi/atspi-constants.h" +#if __has_include() #include +#endif //#define KEYBOARD_DEBUG QT_BEGIN_NAMESPACE +using namespace Qt::Literals::StringLiterals; + /*! \class QSpiApplicationAdaptor \internal @@ -125,9 +129,13 @@ bool QSpiApplicationAdaptor::eventFilter(QObject *target, QEvent *event) de.modifiers = 0; if ((keyEvent->modifiers() & Qt::ShiftModifier) && (keyEvent->key() != Qt::Key_Shift)) de.modifiers |= 1 << ATSPI_MODIFIER_SHIFT; - // TODO rather introduce Qt::CapslockModifier into KeyboardModifier - if (keyEvent->nativeModifiers() & XCB_MOD_MASK_LOCK ) - de.modifiers |= 1 << ATSPI_MODIFIER_SHIFTLOCK; +#ifdef XCB_MOD_MASK_LOCK + if (QGuiApplication::platformName().startsWith("xcb"_L1)) { + // TODO rather introduce Qt::CapslockModifier into KeyboardModifier + if (keyEvent->nativeModifiers() & XCB_MOD_MASK_LOCK ) + de.modifiers |= 1 << ATSPI_MODIFIER_SHIFTLOCK; + } +#endif if ((keyEvent->modifiers() & Qt::ControlModifier) && (keyEvent->key() != Qt::Key_Control)) de.modifiers |= 1 << ATSPI_MODIFIER_CONTROL; if ((keyEvent->modifiers() & Qt::AltModifier) && (keyEvent->key() != Qt::Key_Alt))