summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorMichael Weghorn <m.weghorn@posteo.de>2022-03-28 16:24:23 +0200
committerMichael Weghorn <m.weghorn@posteo.de>2022-03-29 06:55:18 +0200
commit9ee8b709594d2d106dc6ba7b7cac5a7e4300609c (patch)
tree0427b543f1e521ad3c537c4a4811a3cbacd401bd /vcl
parentf622149cb2ee3a8259f8e8f3b013ca5b4b5e1d80 (diff)
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.weghorn@posteo.de>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/qt5/QtAccessibleEventListener.cxx39
1 files changed, 38 insertions, 1 deletions
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: