svtools a11y: Return OAccessible in BrowseBox::getAccessible*

Return the more concrete OAccessible class instead of the
abstract XAccessible UNO interface.

Change-Id: I6e8b74c9bc06a72ab316ba97d76172529e9ab85b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206729
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
This commit is contained in:
Michael Weghorn
2026-06-19 18:11:41 +02:00
parent 8bb4816710
commit e0fce78cbf
3 changed files with 39 additions and 53 deletions
+3 -4
View File
@@ -381,17 +381,16 @@ private:
SAL_DLLPRIVATE void SetToggledSelectedColumn(sal_uInt16 _nSelectedColumnId);
/// @see AccessibleBrowseBox::getHeaderBar
css::uno::Reference<css::accessibility::XAccessible>
rtl::Reference<comphelper::OAccessible>
getAccessibleHeaderBar(AccessibleBrowseBoxObjType _eObjType);
css::uno::Reference<css::accessibility::XAccessible>
rtl::Reference<comphelper::OAccessible>
getAccessibleHeaderCell(BrowseBox::THeaderCellMap& _raHeaderCells, sal_Int32 _nPos,
AccessibleBrowseBoxObjType _eType,
const css::uno::Reference<css::accessibility::XAccessible>& _rParent);
/// @see AccessibleBrowseBox::getTable
css::uno::Reference<css::accessibility::XAccessible>
getAccessibleTable();
rtl::Reference<comphelper::OAccessible> getAccessibleTable();
protected:
bool m_bNavigationBar;
+26 -40
View File
@@ -824,18 +824,15 @@ void BrowseBox::RemoveColumns()
// all columns should be removed, so we remove the column header bar and append it again
// to avoid to notify every column remove
commitBrowseBoxEvent(
AccessibleEventId::CHILD,
Any(),
Any(getAccessibleHeaderBar(AccessibleBrowseBoxObjType::ColumnHeaderBar))
);
commitBrowseBoxEvent(AccessibleEventId::CHILD, Any(),
Any(css::uno::Reference<XAccessible>(
getAccessibleHeaderBar(AccessibleBrowseBoxObjType::ColumnHeaderBar))));
// and now append it again
commitBrowseBoxEvent(
AccessibleEventId::CHILD,
Any(getAccessibleHeaderBar(AccessibleBrowseBoxObjType::ColumnHeaderBar)),
Any()
);
commitBrowseBoxEvent(AccessibleEventId::CHILD,
Any(css::uno::Reference<XAccessible>(
getAccessibleHeaderBar(AccessibleBrowseBoxObjType::ColumnHeaderBar))),
Any());
// notify a table model change
commitTableEvent(
@@ -1144,18 +1141,15 @@ void BrowseBox::Clear()
if ( nOldRowCount == nRowCount )
return;
commitBrowseBoxEvent(
AccessibleEventId::CHILD,
Any(),
Any(getAccessibleHeaderBar( AccessibleBrowseBoxObjType::RowHeaderBar))
);
commitBrowseBoxEvent(AccessibleEventId::CHILD, Any(),
Any(css::uno::Reference<XAccessible>(
getAccessibleHeaderBar(AccessibleBrowseBoxObjType::RowHeaderBar))));
// and now append it again
commitBrowseBoxEvent(
AccessibleEventId::CHILD,
Any(getAccessibleHeaderBar(AccessibleBrowseBoxObjType::RowHeaderBar)),
Any()
);
commitBrowseBoxEvent(AccessibleEventId::CHILD,
Any(css::uno::Reference<XAccessible>(
getAccessibleHeaderBar(AccessibleBrowseBoxObjType::RowHeaderBar))),
Any());
// notify a table model change
commitTableEvent(
@@ -1387,30 +1381,22 @@ void BrowseBox::RowRemoved( sal_Int32 nRow, sal_Int32 nNumRows, bool bDoPaint )
{
// all columns should be removed, so we remove the column header bar and append it again
// to avoid to notify every column remove
commitBrowseBoxEvent(
AccessibleEventId::CHILD,
Any(),
Any(getAccessibleHeaderBar(AccessibleBrowseBoxObjType::RowHeaderBar))
);
commitBrowseBoxEvent(AccessibleEventId::CHILD, Any(),
Any(css::uno::Reference<XAccessible>(getAccessibleHeaderBar(
AccessibleBrowseBoxObjType::RowHeaderBar))));
// and now append it again
commitBrowseBoxEvent(
AccessibleEventId::CHILD,
Any(getAccessibleHeaderBar(AccessibleBrowseBoxObjType::RowHeaderBar)),
Any()
);
commitBrowseBoxEvent(
AccessibleEventId::CHILD,
Any(),
Any(getAccessibleTable())
);
commitBrowseBoxEvent(AccessibleEventId::CHILD,
Any(css::uno::Reference<XAccessible>(getAccessibleHeaderBar(
AccessibleBrowseBoxObjType::RowHeaderBar))),
Any());
commitBrowseBoxEvent(AccessibleEventId::CHILD, Any(),
Any(css::uno::Reference<XAccessible>(getAccessibleTable())));
// and now append it again
commitBrowseBoxEvent(
AccessibleEventId::CHILD,
Any(getAccessibleTable()),
Any()
);
commitBrowseBoxEvent(AccessibleEventId::CHILD,
Any(css::uno::Reference<XAccessible>(getAccessibleTable())),
Any());
}
else
{
+10 -9
View File
@@ -34,12 +34,12 @@ using namespace ::com::sun::star::uno;
using ::com::sun::star::accessibility::XAccessible;
using namespace ::com::sun::star::accessibility;
Reference<XAccessible> BrowseBox::getAccessibleHeaderCell(BrowseBox::THeaderCellMap& _raHeaderCells,
sal_Int32 _nPos,
AccessibleBrowseBoxObjType _eType,
const Reference<XAccessible>& _rParent)
rtl::Reference<comphelper::OAccessible>
BrowseBox::getAccessibleHeaderCell(BrowseBox::THeaderCellMap& _raHeaderCells, sal_Int32 _nPos,
AccessibleBrowseBoxObjType _eType,
const Reference<XAccessible>& _rParent)
{
Reference<XAccessible> xRet;
rtl::Reference<comphelper::OAccessible> pRet;
BrowseBox::THeaderCellMap::iterator aFind = _raHeaderCells.find(_nPos);
if (aFind == _raHeaderCells.end())
{
@@ -48,18 +48,19 @@ Reference<XAccessible> BrowseBox::getAccessibleHeaderCell(BrowseBox::THeaderCell
aFind = _raHeaderCells.emplace(_nPos, pAccessible).first;
}
if (aFind != _raHeaderCells.end())
xRet = aFind->second;
return xRet;
pRet = aFind->second;
return pRet;
}
Reference<XAccessible> BrowseBox::getAccessibleHeaderBar(AccessibleBrowseBoxObjType _eObjType)
rtl::Reference<comphelper::OAccessible>
BrowseBox::getAccessibleHeaderBar(AccessibleBrowseBoxObjType _eObjType)
{
if (m_xAccessible && m_xAccessible->isAlive())
return m_xAccessible->getHeaderBar(_eObjType);
return nullptr;
}
Reference<XAccessible> BrowseBox::getAccessibleTable()
rtl::Reference<comphelper::OAccessible> BrowseBox::getAccessibleTable()
{
if (m_xAccessible && m_xAccessible->isAlive())
return m_xAccessible->getTable();