accessibility/inc/extended/accessiblelistbox.hxx | 2 - accessibility/source/extended/accessiblelistbox.cxx | 22 ++++++++------------ 2 files changed, 10 insertions(+), 14 deletions(-)
New commits: commit efd357d70438b905c5349c304a43347fd293ee6a Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Wed Aug 30 11:48:58 2023 +0200 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Wed Aug 30 13:31:09 2023 +0200 a11y: Hold focused list box entry by rtl::Reference Use an `rtl::Reference<AccessibleListBoxEntry>` for the currently focused entry instead of using a `css::uno::Reference<css::accessibility::XAccessible>` and casting almost every time that it's used. Change-Id: Ia3aeca18e61d82b127bf19dd0902d781168b93d0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156281 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> diff --git a/accessibility/inc/extended/accessiblelistbox.hxx b/accessibility/inc/extended/accessiblelistbox.hxx index 5eeaf92d672c..55112facacbc 100644 --- a/accessibility/inc/extended/accessiblelistbox.hxx +++ b/accessibility/inc/extended/accessiblelistbox.hxx @@ -105,7 +105,7 @@ namespace accessibility typedef std::unordered_map<SvTreeListEntry*, rtl::Reference<AccessibleListBoxEntry>> MAP_ENTRY; MAP_ENTRY m_mapEntry; - css::uno::Reference< css::accessibility::XAccessible > m_xFocusedChild; + rtl::Reference<AccessibleListBoxEntry> m_xFocusedEntry; accessibility::AccessibleListBoxEntry* GetCurEventEntry( const VclWindowEvent& rVclWindowEvent ); diff --git a/accessibility/source/extended/accessiblelistbox.cxx b/accessibility/source/extended/accessiblelistbox.cxx index f0651f05354f..31330c845448 100644 --- a/accessibility/source/extended/accessiblelistbox.cxx +++ b/accessibility/source/extended/accessiblelistbox.cxx @@ -102,10 +102,9 @@ namespace accessibility { if ( getListBox() && getListBox()->HasFocus() ) { - AccessibleListBoxEntry* pEntry =static_cast< AccessibleListBoxEntry* >(m_xFocusedChild.get()); - if (pEntry) + if (m_xFocusedEntry.is()) { - pEntry->NotifyAccessibleEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() ); + m_xFocusedEntry->NotifyAccessibleEvent(AccessibleEventId::SELECTION_CHANGED, Any(), Any()); } } } @@ -119,20 +118,18 @@ namespace accessibility SvTreeListEntry* pEntry = static_cast< SvTreeListEntry* >( rVclWindowEvent.GetData() ); if ( pEntry ) { - AccessibleListBoxEntry* pEntryFocus =static_cast< AccessibleListBoxEntry* >(m_xFocusedChild.get()); - if (pEntryFocus && pEntryFocus->GetSvLBoxEntry() == pEntry) + if (m_xFocusedEntry.is() && m_xFocusedEntry->GetSvLBoxEntry() == pEntry) { - aNewValue <<= m_xFocusedChild; + aNewValue <<= uno::Reference<XAccessible>(m_xFocusedEntry);; NotifyAccessibleEvent( AccessibleEventId::ACTIVE_DESCENDANT_CHANGED, uno::Any(), aNewValue ); return ; } - uno::Any aOldValue; - aOldValue <<= m_xFocusedChild; + aOldValue <<= uno::Reference<XAccessible>(m_xFocusedEntry);; - m_xFocusedChild.set(implGetAccessible(*pEntry)); + m_xFocusedEntry = implGetAccessible(*pEntry); - aNewValue <<= m_xFocusedChild; + aNewValue <<= uno::Reference<XAccessible>(m_xFocusedEntry); NotifyAccessibleEvent( AccessibleEventId::ACTIVE_DESCENDANT_CHANGED, aOldValue, aNewValue ); } else @@ -202,8 +199,7 @@ namespace accessibility if ( !pEntry ) pEntry = getListBox()->GetCurEntry(); - AccessibleListBoxEntry* pEntryFocus =static_cast< AccessibleListBoxEntry* >(m_xFocusedChild.get()); - if (pEntryFocus && pEntry && pEntry != pEntryFocus->GetSvLBoxEntry()) + if (m_xFocusedEntry.is() && pEntry && pEntry != m_xFocusedEntry->GetSvLBoxEntry()) { AccessibleListBoxEntry *const pAccCurOptionEntry = implGetAccessible(*pEntry).get(); uno::Any aNewValue; @@ -214,7 +210,7 @@ namespace accessibility } else { - return pEntryFocus; + return m_xFocusedEntry.get(); } }