vcl/qt5/QtAccessibleEventListener.cxx |   15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

New commits:
commit 8ce3d4f8b000e11d63d37546c5f574e57db46551
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Thu Aug 25 16:58:06 2022 +0200
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Thu Aug 25 18:37:02 2022 +0200

    qt a11y: Forward text selection change event as such
    
    Change-Id: I7e208d964c5b5badb0a3ea3a19c3ca3cc7fa4ff4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138838
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>

diff --git a/vcl/qt5/QtAccessibleEventListener.cxx 
b/vcl/qt5/QtAccessibleEventListener.cxx
index dd2ee1b2eae6..9dbc3f3e5504 100644
--- a/vcl/qt5/QtAccessibleEventListener.cxx
+++ b/vcl/qt5/QtAccessibleEventListener.cxx
@@ -30,6 +30,7 @@
 #include <com/sun/star/accessibility/TextSegment.hpp>
 
 #include <QtGui/QAccessible>
+#include <QtGui/QAccessibleTextSelectionEvent>
 
 using namespace css;
 using namespace css::accessibility;
@@ -222,9 +223,21 @@ void QtAccessibleEventListener::notifyEvent(const 
css::accessibility::Accessible
                 new QAccessibleEvent(pQAccessibleInterface, 
QAccessible::VisibleDataChanged));
             return;
         case AccessibleEventId::TEXT_SELECTION_CHANGED:
+        {
+            QAccessibleTextInterface* pTextInterface = 
pQAccessibleInterface->textInterface();
+            if (!pTextInterface)
+            {
+                SAL_WARN("vcl.qt", "TEXT_SELECTION_CHANGED event received for 
object not "
+                                   "implementing text interface");
+                return;
+            }
+            int nStartOffset = 0;
+            int nEndOffset = 0;
+            pTextInterface->selection(0, &nStartOffset, &nEndOffset);
             QAccessible::updateAccessibility(
-                new QAccessibleEvent(pQAccessibleInterface, 
QAccessible::Selection));
+                new QAccessibleTextSelectionEvent(pQAccessibleInterface, 
nStartOffset, nEndOffset));
             return;
+        }
         case AccessibleEventId::TEXT_ATTRIBUTE_CHANGED:
             QAccessible::updateAccessibility(
                 new QAccessibleEvent(pQAccessibleInterface, 
QAccessible::AttributeChanged));

Reply via email to