diff options
author | Michael Weghorn <m.weghorn@posteo.de> | 2022-03-28 16:24:23 +0200 |
---|---|---|
committer | Michael Weghorn <m.weghorn@posteo.de> | 2022-03-29 06:55:18 +0200 |
commit | 9ee8b709594d2d106dc6ba7b7cac5a7e4300609c (patch) | |
tree | 0427b543f1e521ad3c537c4a4811a3cbacd401bd /vcl | |
parent | f622149cb2ee3a8259f8e8f3b013ca5b4b5e1d80 (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.cxx | 39 |
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: |