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

New commits:
commit 9ee8b709594d2d106dc6ba7b7cac5a7e4300609c
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Mon Mar 28 16:24:23 2022 +0200
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Tue Mar 29 06:55:18 2022 +0200

    qt a11y: Handle TABLE_MODEL_CHANGED event
    
    Note however, that as of now, this doesn't
    have any effect in practice, since
    `AtSpiAdaptor` for Linux in the Qt library
    currently just ignores `QAccessible::TableModelChanged`
    events instead of forwarding them as corresponding
    AT-SPI events. [1]
    
    [1] 
https://code.qt.io/cgit/qt/qtbase.git/tree/src/gui/accessible/linux/atspiadaptor.cpp?id=9a4c32cedda3a00e06eb3aed13a731d23f6c56d9#n1105
    
    Change-Id: I6339d172da54bc30987bb9261ce37005ebce5501
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132222
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>

diff --git a/vcl/qt5/QtAccessibleEventListener.cxx 
b/vcl/qt5/QtAccessibleEventListener.cxx
index 29aba6ef3b0d..515584351c74 100644
--- a/vcl/qt5/QtAccessibleEventListener.cxx
+++ b/vcl/qt5/QtAccessibleEventListener.cxx
@@ -23,6 +23,8 @@
 #include <sal/log.hxx>
 
 #include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleTableModelChange.hpp>
+#include <com/sun/star/accessibility/AccessibleTableModelChangeType.hpp>
 #include <com/sun/star/accessibility/TextSegment.hpp>
 
 #include <QtGui/QAccessible>
@@ -132,6 +134,42 @@ void QtAccessibleEventListener::notifyEvent(const 
css::accessibility::Accessible
             QAccessible::updateAccessibility(
                 new QAccessibleEvent(pQAccessibleInterface, 
QAccessible::TableColumnHeaderChanged));
             return;
+        case AccessibleEventId::TABLE_MODEL_CHANGED:
+        {
+            AccessibleTableModelChange aChange;
+            aEvent.NewValue >>= aChange;
+
+            QAccessibleTableModelChangeEvent::ModelChangeType nType;
+            switch (aChange.Type)
+            {
+                case AccessibleTableModelChangeType::COLUMNS_INSERTED:
+                    nType = QAccessibleTableModelChangeEvent::ColumnsInserted;
+                    break;
+                case AccessibleTableModelChangeType::COLUMNS_REMOVED:
+                    nType = QAccessibleTableModelChangeEvent::ColumnsRemoved;
+                    break;
+                case AccessibleTableModelChangeType::ROWS_INSERTED:
+                    nType = QAccessibleTableModelChangeEvent::RowsInserted;
+                    break;
+                case AccessibleTableModelChangeType::ROWS_REMOVED:
+                    nType = QAccessibleTableModelChangeEvent::RowsRemoved;
+                    break;
+                case AccessibleTableModelChangeType::UPDATE:
+                    nType = QAccessibleTableModelChangeEvent::DataChanged;
+                    break;
+                default:
+                    assert(false && "Unhandled 
AccessibleTableModelChangeType");
+                    return;
+            }
+            QAccessibleTableModelChangeEvent* pTableEvent
+                = new QAccessibleTableModelChangeEvent(pQAccessibleInterface, 
nType);
+            pTableEvent->setFirstRow(aChange.FirstRow);
+            pTableEvent->setLastRow(aChange.LastRow);
+            pTableEvent->setFirstColumn(aChange.FirstColumn);
+            pTableEvent->setLastColumn(aChange.LastColumn);
+            QAccessible::updateAccessibility(pTableEvent);
+            return;
+        }
         case AccessibleEventId::TABLE_ROW_DESCRIPTION_CHANGED:
             QAccessible::updateAccessibility(new QAccessibleEvent(
                 pQAccessibleInterface, 
QAccessible::TableRowDescriptionChanged));
@@ -197,7 +235,6 @@ void QtAccessibleEventListener::notifyEvent(const 
css::accessibility::Accessible
         case AccessibleEventId::LABELED_BY_RELATION_CHANGED:
         case AccessibleEventId::MEMBER_OF_RELATION_CHANGED:
         case AccessibleEventId::SUB_WINDOW_OF_RELATION_CHANGED:
-        case AccessibleEventId::TABLE_MODEL_CHANGED:
         case AccessibleEventId::LISTBOX_ENTRY_EXPANDED:
         case AccessibleEventId::LISTBOX_ENTRY_COLLAPSED:
         case AccessibleEventId::ACTIVE_DESCENDANT_CHANGED_NOFOCUS:

Reply via email to