summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Sturmlechner <asturm@gentoo.org>2020-09-08 19:45:52 +0200
committerAndreas Sturmlechner <asturm@gentoo.org>2020-09-08 20:07:43 +0200
commitb08267d1e6c2fda88482f2e325b885c9f85f6103 (patch)
treee0d5b46f7cba35e220fc98c5b35c6a151fb8e69a /app-office/libreoffice/files
parentmedia-libs/x265: Drop 2.8, 2.9, 3.0, 3.1*, 3.2*, 3.3 (diff)
downloadgentoo-b08267d1e6c2fda88482f2e325b885c9f85f6103.tar.gz
gentoo-b08267d1e6c2fda88482f2e325b885c9f85f6103.tar.bz2
gentoo-b08267d1e6c2fda88482f2e325b885c9f85f6103.zip
app-office/libreoffice: Backport "qt5: Remember accessible object"
Thanks-to: Jaak Ristioja <jaak@ristioja.ee> Reported-by: Marian Kyral <mkyral@email.cz> Bug: https://bugs.gentoo.org/680186 Package-Manager: Portage-3.0.6, Repoman-3.0.1 Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
Diffstat (limited to 'app-office/libreoffice/files')
-rw-r--r--app-office/libreoffice/files/libreoffice-6.4.6.2-qaccessiblecache-assert.patch102
1 files changed, 102 insertions, 0 deletions
diff --git a/app-office/libreoffice/files/libreoffice-6.4.6.2-qaccessiblecache-assert.patch b/app-office/libreoffice/files/libreoffice-6.4.6.2-qaccessiblecache-assert.patch
new file mode 100644
index 000000000000..baeabcbad4e2
--- /dev/null
+++ b/app-office/libreoffice/files/libreoffice-6.4.6.2-qaccessiblecache-assert.patch
@@ -0,0 +1,102 @@
+From 8e6b7d5696378e946e904c1df87da83e139af90d Mon Sep 17 00:00:00 2001
+From: Michael Weghorn <m.weghorn@posteo.de>
+Date: Mon, 7 Sep 2020 20:08:57 +0200
+Subject: tdf#136323 qt5: Remember accessible object
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+'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.weghorn@posteo.de>
+(cherry picked from commit 4461d49c6cfce22c2c96185b0a1d07bfe9709268)
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102126
+Reviewed-by: Caolán McNamara <caolanm@redhat.com>
+---
+ vcl/inc/qt5/Qt5AccessibleWidget.hxx | 4 +++-
+ vcl/qt5/Qt5AccessibleWidget.cxx | 9 +++++----
+ 2 files changed, 8 insertions(+), 5 deletions(-)
+
+diff --git a/vcl/inc/qt5/Qt5AccessibleWidget.hxx b/vcl/inc/qt5/Qt5AccessibleWidget.hxx
+index 6b0d71cba9f5..0f62d2a8a5b8 100644
+--- a/vcl/inc/qt5/Qt5AccessibleWidget.hxx
++++ b/vcl/inc/qt5/Qt5AccessibleWidget.hxx
+@@ -41,7 +41,8 @@ class VCLPLUG_QT5_PUBLIC Qt5AccessibleWidget : 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 6a828865036e..7136e0823790 100644
+--- a/vcl/qt5/Qt5AccessibleWidget.cxx
++++ b/vcl/qt5/Qt5AccessibleWidget.cxx
+@@ -58,8 +58,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);
+@@ -698,7 +699,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 */) {}
+
+@@ -721,13 +722,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;
+--
+cgit v1.2.1
+