diff options
Diffstat (limited to 'src/gui/accessible/linux/qspiapplicationadaptor.cpp')
-rw-r--r-- | src/gui/accessible/linux/qspiapplicationadaptor.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/gui/accessible/linux/qspiapplicationadaptor.cpp b/src/gui/accessible/linux/qspiapplicationadaptor.cpp index 1cac4598ca..37d7648984 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(<xcb/xproto.h>) #include <xcb/xproto.h> +#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)) @@ -173,11 +181,11 @@ QKeyEvent* QSpiApplicationAdaptor::copyKeyEvent(QKeyEvent* old) void QSpiApplicationAdaptor::notifyKeyboardListenerCallback(const QDBusMessage& message) { - if (!keyEvents.length()) { + if (!keyEvents.size()) { qWarning("QSpiApplication::notifyKeyboardListenerCallback with no queued key called"); return; } - Q_ASSERT(message.arguments().length() == 1); + Q_ASSERT(message.arguments().size() == 1); if (message.arguments().at(0).toBool() == true) { QPair<QPointer<QObject>, QKeyEvent*> event = keyEvents.dequeue(); delete event.second; |