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: