vcl/inc/qt5/Qt5AccessibleWidget.hxx | 4 +++- vcl/qt5/Qt5AccessibleWidget.cxx | 9 +++++---- 2 files changed, 8 insertions(+), 5 deletions(-)
New commits: commit 72549d97c220d63d5fd5f6f38ae14f13c3e3d919 Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Mon Sep 7 20:08:57 2020 +0200 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Tue Sep 8 10:05:27 2020 +0200 tdf#136323 qt5: Remember accessible object 'QAccessibleCache::insert' from the Qt library has a 'Q_ASSERT' checking that the corresponding 'QObject' for which the 'QAccessibleInterface' provides information is actually the same as the object passed as a parameter: QAccessible::Id QAccessibleCache::insert(QObject *object, QAccessibleInterface *iface) const { // ... QObject *obj = iface->object(); -> Q_ASSERT(object == obj); However, 'Qt5AccessibleWidget::object' so far was always returning 'nullptr', triggering this assert when using a Qt version not built with 'QT_NO_DEBUG'. To fix this, remember and return the object as needed. Change-Id: I4015b4c37aa8a073b02465df580a7235884e6cf3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102196 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> (cherry picked from commit 4461d49c6cfce22c2c96185b0a1d07bfe9709268) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102125 Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/vcl/inc/qt5/Qt5AccessibleWidget.hxx b/vcl/inc/qt5/Qt5AccessibleWidget.hxx index 2cd4840c6dfa..aacaba9a80c8 100644 --- a/vcl/inc/qt5/Qt5AccessibleWidget.hxx +++ b/vcl/inc/qt5/Qt5AccessibleWidget.hxx @@ -41,7 +41,8 @@ class Qt5AccessibleWidget final : public QObject, Q_OBJECT public: - Qt5AccessibleWidget(const css::uno::Reference<css::accessibility::XAccessible> xAccessible); + Qt5AccessibleWidget(const css::uno::Reference<css::accessibility::XAccessible> xAccessible, + QObject* pObject); QWindow* window() const override; int childCount() const override; int indexOfChild(const QAccessibleInterface* child) const override; @@ -137,6 +138,7 @@ public: private: css::uno::Reference<css::accessibility::XAccessible> m_xAccessible; css::uno::Reference<css::accessibility::XAccessibleContext> getAccessibleContextImpl() const; + QObject* m_pObject; }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/qt5/Qt5AccessibleWidget.cxx b/vcl/qt5/Qt5AccessibleWidget.cxx index 829e7e3a818d..15ebdf36b11d 100644 --- a/vcl/qt5/Qt5AccessibleWidget.cxx +++ b/vcl/qt5/Qt5AccessibleWidget.cxx @@ -60,8 +60,9 @@ using namespace css::accessibility; using namespace css::beans; using namespace css::uno; -Qt5AccessibleWidget::Qt5AccessibleWidget(const Reference<XAccessible> xAccessible) +Qt5AccessibleWidget::Qt5AccessibleWidget(const Reference<XAccessible> xAccessible, QObject* pObject) : m_xAccessible(xAccessible) + , m_pObject(pObject) { Reference<XAccessibleContext> xContext = xAccessible->getAccessibleContext(); Reference<XAccessibleEventBroadcaster> xBroadcaster(xContext, UNO_QUERY); @@ -700,7 +701,7 @@ bool Qt5AccessibleWidget::isValid() const return xAc.is(); } -QObject* Qt5AccessibleWidget::object() const { return nullptr; } +QObject* Qt5AccessibleWidget::object() const { return m_pObject; } void Qt5AccessibleWidget::setText(QAccessible::Text /* t */, const QString& /* text */) {} @@ -723,13 +724,13 @@ QAccessibleInterface* Qt5AccessibleWidget::customFactory(const QString& classnam vcl::Window* pWindow = pWidget->frame().GetWindow(); if (pWindow) - return new Qt5AccessibleWidget(pWindow->GetAccessible()); + return new Qt5AccessibleWidget(pWindow->GetAccessible(), object); } if (classname == QLatin1String("Qt5XAccessible") && object) { Qt5XAccessible* pXAccessible = dynamic_cast<Qt5XAccessible*>(object); if (pXAccessible && pXAccessible->m_xAccessible.is()) - return new Qt5AccessibleWidget(pXAccessible->m_xAccessible); + return new Qt5AccessibleWidget(pXAccessible->m_xAccessible, object); } return nullptr; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits