diff options
author | David Edmundson <davidedmundson@kde.org> | 2017-09-15 18:34:49 +0200 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@qt.io> | 2018-10-15 14:32:43 +0000 |
commit | 0761173a046f8f10cc185cff9c524ae6a5284556 (patch) | |
tree | 9d765ce9d784a85d2cbcc5f714372d0cd45396f8 | |
parent | 3d02f3ad3339a6a711cadee35244d24c1ba913e2 (diff) |
Load the Linux SPI Accessibility bridge
This is mostly a copy of XCB's atspi brige loading, only it creates the
original QPlatformAccessility() instance if the atspi bridge is not
available, to match the current behavior.
This also moves accesibility module to be lazy-loaded to match both Mir
and XCB QPAs.
Change-Id: I7b7ccadbec3760ab8a9449124db0db3f28c1f355
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
-rw-r--r-- | src/client/client.pro | 3 | ||||
-rw-r--r-- | src/client/qwaylandintegration.cpp | 16 | ||||
-rw-r--r-- | src/client/qwaylandintegration_p.h | 2 |
3 files changed, 17 insertions, 4 deletions
diff --git a/src/client/client.pro b/src/client/client.pro index d65866e61..42e7cae8c 100644 --- a/src/client/client.pro +++ b/src/client/client.pro @@ -18,6 +18,9 @@ CONFIG += link_pkgconfig wayland-scanner qtConfig(xkbcommon-evdev): \ QMAKE_USE_PRIVATE += xkbcommon_evdev +qtHaveModule(linuxaccessibility_support_private): \ + QT += linuxaccessibility_support_private + QMAKE_USE += wayland-client INCLUDEPATH += $$PWD/../shared diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp index d2fa8568c..c3163ee3d 100644 --- a/src/client/qwaylandintegration.cpp +++ b/src/client/qwaylandintegration.cpp @@ -86,6 +86,10 @@ #include "qwaylandinputdeviceintegration_p.h" #include "qwaylandinputdeviceintegrationfactory_p.h" +#ifndef QT_NO_ACCESSIBILITY_ATSPI_BRIDGE +#include <QtLinuxAccessibilitySupport/private/bridge_p.h> +#endif + QT_BEGIN_NAMESPACE namespace QtWaylandClient { @@ -129,9 +133,6 @@ QWaylandIntegration::QWaylandIntegration() : mFontDb(new QGenericUnixFontDatabase()) #endif , mNativeInterface(new QWaylandNativeInterface(this)) -#if QT_CONFIG(accessibility) - , mAccessibility(new QPlatformAccessibility()) -#endif { initializeInputDeviceIntegration(); mDisplay.reset(new QWaylandDisplay(this)); @@ -277,6 +278,15 @@ QVariant QWaylandIntegration::styleHint(StyleHint hint) const #if QT_CONFIG(accessibility) QPlatformAccessibility *QWaylandIntegration::accessibility() const { + if (!mAccessibility) { +#ifndef QT_NO_ACCESSIBILITY_ATSPI_BRIDGE + Q_ASSERT_X(QCoreApplication::eventDispatcher(), "QXcbIntegration", + "Initializing accessibility without event-dispatcher!"); + mAccessibility.reset(new QSpiAccessibleBridge()); +#else + mAccessibility.reset(new QPlatformAccessibility()); +#endif + } return mAccessibility.data(); } #endif diff --git a/src/client/qwaylandintegration_p.h b/src/client/qwaylandintegration_p.h index a5a3d7b69..944f635bb 100644 --- a/src/client/qwaylandintegration_p.h +++ b/src/client/qwaylandintegration_p.h @@ -145,7 +145,7 @@ private: QScopedPointer<QPlatformNativeInterface> mNativeInterface; QScopedPointer<QPlatformInputContext> mInputContext; #if QT_CONFIG(accessibility) - QScopedPointer<QPlatformAccessibility> mAccessibility; + mutable QScopedPointer<QPlatformAccessibility> mAccessibility; #endif bool mFailed = false; bool mClientBufferIntegrationInitialized = false; |