sw/inc/accmap.hxx                |    3 +--
 sw/source/core/access/accmap.cxx |   15 ++++++---------
 2 files changed, 7 insertions(+), 11 deletions(-)

New commits:
commit 8479bbecd2434d65eb6c26100a783ecf96f6da12
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Wed Jan 24 12:10:32 2024 +0100
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Thu Jan 25 09:41:38 2024 +0100

    sw a11y: Return SwAccessibleContext to avoid casting
    
    Let `SwAccessibleMap::GetDocumentView_` return the
    more concrete `rtl::Reference<SwAccessibleContext>`
    instead of `uno::Reference<XAccessible>`, which
    avoids having to cast in one place in
    `SwAccessibleMap::DoInvalidateShapeSelection`
    (and more places in upcoming changes).
    
    Replace the null check by an assert, as
    `SwAccessibleMap::GetDocumentView_` never
    returns an empty reference.
    
    Change-Id: I32d5bd2f81e7a69eacf92af1cf24249eb3a9f2a0
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162516
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>

diff --git a/sw/inc/accmap.hxx b/sw/inc/accmap.hxx
index 6e5c189a97b4..9daf15b8ae07 100644
--- a/sw/inc/accmap.hxx
+++ b/sw/inc/accmap.hxx
@@ -131,8 +131,7 @@ class SwAccessibleMap final : public 
::accessibility::IAccessibleViewForwarder,
 
     void InvalidateRelationSet_( const SwFrame* pFrame, bool bFrom );
 
-    css::uno::Reference<css::accessibility::XAccessible>
-            GetDocumentView_( bool bPagePreview );
+    rtl::Reference<SwAccessibleContext> GetDocumentView_(bool bPagePreview);
 
     /** method to build up a new data structure of the accessible paragraphs,
         which have a selection
diff --git a/sw/source/core/access/accmap.cxx b/sw/source/core/access/accmap.cxx
index ebc877601efc..0a6da3f501b8 100644
--- a/sw/source/core/access/accmap.cxx
+++ b/sw/source/core/access/accmap.cxx
@@ -1556,14 +1556,11 @@ void SwAccessibleMap::DoInvalidateShapeSelection(bool 
bInvalidateFocusMode /*=fa
     const unsigned int SELECTION_WITH_NUM = 10;
     if (vecxShapeAdd.size() > SELECTION_WITH_NUM )
     {
-         uno::Reference< XAccessible > xDoc = GetDocumentView( );
-         SwAccessibleContext * pCont = static_cast<SwAccessibleContext 
*>(xDoc.get());
-         if (pCont)
-         {
-             AccessibleEventObject aEvent;
-             aEvent.EventId = AccessibleEventId::SELECTION_CHANGED_WITHIN;
-             pCont->FireAccessibleEvent(aEvent);
-         }
+        rtl::Reference<SwAccessibleContext> xDoc = GetDocumentView_(false);
+        assert(xDoc.is());
+        AccessibleEventObject aEvent;
+        aEvent.EventId = AccessibleEventId::SELECTION_CHANGED_WITHIN;
+        xDoc->FireAccessibleEvent(aEvent);
     }
     else
     {
@@ -1696,7 +1693,7 @@ SwAccessibleMap::~SwAccessibleMap()
     mpVSh->GetLayout()->RemoveAccessibleShell();
 }
 
-uno::Reference< XAccessible > SwAccessibleMap::GetDocumentView_(
+rtl::Reference<SwAccessibleContext> SwAccessibleMap::GetDocumentView_(
     bool bPagePreview )
 {
     DBG_TESTSOLARMUTEX();

Reply via email to