sw/inc/accmap.hxx                |    4 
 sw/source/core/access/accmap.cxx |  196 ++++++++++++++-------------------------
 2 files changed, 76 insertions(+), 124 deletions(-)

New commits:
commit 14dc749f575a8faea301472ed22f9c6b24044e8d
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Wed Aug 30 16:02:29 2023 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Fri Sep 1 08:49:17 2023 +0200

    use concrete type for SwAccessibleMap::mxCursorContext
    
    avoid some unnecessary casting
    
    Change-Id: I354ac67aa7a0c7f8ebe676315c66c97af31dc4e1
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156318
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/sw/inc/accmap.hxx b/sw/inc/accmap.hxx
index 33f3a2d93f94..42a73cbf4fe9 100644
--- a/sw/inc/accmap.hxx
+++ b/sw/inc/accmap.hxx
@@ -27,7 +27,7 @@
 
 #include <svx/AccessibleControlShape.hxx>
 #include <o3tl/typed_flags_set.hxx>
-
+#include <unotools/weakref.hxx>
 #include <vector>
 #include <memory>
 #include <o3tl/sorted_vector.hxx>
@@ -108,7 +108,7 @@ class SwAccessibleMap final : public 
::accessibility::IAccessibleViewForwarder,
     /// preview-to-display coordinates
     std::unique_ptr<SwAccPreviewData> mpPreview;
 
-    css::uno::WeakReference < css::accessibility::XAccessible > 
mxCursorContext;
+    unotools::WeakReference< SwAccessibleContext > mxCursorContext;
 
     bool mbShapeSelected;
 
diff --git a/sw/source/core/access/accmap.cxx b/sw/source/core/access/accmap.cxx
index 02038f14fc25..b8b87289286a 100644
--- a/sw/source/core/access/accmap.cxx
+++ b/sw/source/core/access/accmap.cxx
@@ -86,8 +86,8 @@ using namespace ::sw::access;
 class SwAccessibleContextMap_Impl
 {
 public:
-    typedef const SwFrame *                                               
key_type;
-    typedef uno::WeakReference < XAccessible >                          
mapped_type;
+    typedef const SwFrame *                                             
key_type;
+    typedef unotools::WeakReference < SwAccessibleContext >                  
mapped_type;
     typedef std::pair<const key_type,mapped_type>                       
value_type;
     typedef std::unordered_map<key_type, mapped_type>::iterator iterator;
     typedef std::unordered_map<key_type, mapped_type>::const_iterator 
const_iterator;
@@ -647,8 +647,8 @@ struct SwAccessibleParaSelection
 
 struct SwXAccWeakRefComp
 {
-    bool operator()( const uno::WeakReference<XAccessible>& _rXAccWeakRef1,
-                         const uno::WeakReference<XAccessible>& _rXAccWeakRef2 
) const
+    bool operator()( const unotools::WeakReference<SwAccessibleContext>& 
_rXAccWeakRef1,
+                         const unotools::WeakReference<SwAccessibleContext>& 
_rXAccWeakRef2 ) const
     {
         return _rXAccWeakRef1.get() < _rXAccWeakRef2.get();
     }
@@ -659,7 +659,7 @@ struct SwXAccWeakRefComp
 class SwAccessibleSelectedParas_Impl
 {
 public:
-    typedef uno::WeakReference < XAccessible >                          
key_type;
+    typedef unotools::WeakReference < SwAccessibleContext >             
key_type;
     typedef SwAccessibleParaSelection                                   
mapped_type;
     typedef std::pair<const key_type,mapped_type>                       
value_type;
     typedef SwXAccWeakRefComp                                           
key_compare;
@@ -859,7 +859,7 @@ void SwAccPreviewData::AdjustLogicPgRectToVisibleArea(
     _iorLogicPgSwRect.AddBottom( - nTmpDiff );
 }
 
-static bool AreInSameTable( const uno::Reference< XAccessible >& rAcc,
+static bool AreInSameTable( const rtl::Reference< SwAccessibleContext >& rAcc,
                                   const SwFrame *pFrame )
 {
     bool bRet = false;
@@ -870,11 +870,9 @@ static bool AreInSameTable( const uno::Reference< 
XAccessible >& rAcc,
         // by comparing the last table frame in the
         // follow chain, because that's cheaper than
         // searching the first one.
-        SwAccessibleContext *pAccImpl =
-            static_cast< SwAccessibleContext *>( rAcc.get() );
-        if( pAccImpl->GetFrame()->IsCellFrame() )
+        if( rAcc->GetFrame()->IsCellFrame() )
         {
-            const SwTabFrame *pTabFrame1 = 
pAccImpl->GetFrame()->FindTabFrame();
+            const SwTabFrame *pTabFrame1 = rAcc->GetFrame()->FindTabFrame();
             if (pTabFrame1)
             {
                 while (pTabFrame1->GetFollow())
@@ -904,14 +902,10 @@ void SwAccessibleMap::FireEvent( const 
SwAccessibleEvent_Impl& rEvent )
             mpFrameMap->find( rEvent.mpParentFrame );
         if( aIter != mpFrameMap->end() )
         {
-            uno::Reference < XAccessible > xAcc( (*aIter).second );
-            if (xAcc.is())
+            rtl::Reference < SwAccessibleContext > xContext( 
(*aIter).second.get() );
+            if (xContext.is() && xContext->getAccessibleRole() == 
AccessibleRole::PARAGRAPH)
             {
-                uno::Reference < XAccessibleContext >  
xContext(xAcc,uno::UNO_QUERY);
-                if (xContext.is() && xContext->getAccessibleRole() == 
AccessibleRole::PARAGRAPH)
-                {
-                    xAccImpl = static_cast< SwAccessibleContext *>( xAcc.get() 
);
-                }
+                xAccImpl = xContext.get();
             }
         }
     }
@@ -1324,7 +1318,7 @@ void SwAccessibleMap::InvalidateShapeInParaSelection()
             const SwFrame *pFrame = (*aIter).first;
             if(pFrame->IsFlyFrame())
             {
-                uno::Reference < XAccessible > xAcc = (*aIter).second;
+                rtl::Reference < SwAccessibleContext > xAcc = (*aIter).second;
 
                 if(xAcc.is())
                 {
@@ -1403,11 +1397,11 @@ void SwAccessibleMap::InvalidateShapeInParaSelection()
                         SwAccessibleContextMap_Impl::iterator aIter = 
mpFrameMap->find( pFrame );
                         if( aIter != mpFrameMap->end() )
                         {
-                            uno::Reference < XAccessible > xAcc = 
(*aIter).second;
+                            rtl::Reference < SwAccessibleContext > xAcc = 
(*aIter).second;
                             bool isChanged = false;
                             if( xAcc.is() )
                             {
-                                isChanged = static_cast< SwAccessibleContext * 
>(xAcc.get())->SetSelectedState( true );
+                                isChanged = xAcc->SetSelectedState( true );
                             }
                             if(!isChanged)
                             {
@@ -1418,7 +1412,7 @@ void SwAccessibleMap::InvalidateShapeInParaSelection()
                             else
                             {
                                 bMarkChanged = true;
-                                vecAdd.push_back(static_cast< 
SwAccessibleContext * >(xAcc.get()));
+                                vecAdd.push_back(xAcc.get());
                             }
 
                             mapTemp.emplace( pFrame, xAcc );
@@ -1435,11 +1429,11 @@ void SwAccessibleMap::InvalidateShapeInParaSelection()
         SwAccessibleContextMap_Impl::iterator aIter = 
mpSelectedFrameMap->begin();
         while( aIter != mpSelectedFrameMap->end() )
         {
-            uno::Reference < XAccessible > xAcc = (*aIter).second;
+            rtl::Reference < SwAccessibleContext > xAcc = (*aIter).second;
             if(xAcc.is())
-                static_cast< SwAccessibleContext * 
>(xAcc.get())->SetSelectedState( false );
+                xAcc->SetSelectedState( false );
             ++aIter;
-            vecRemove.push_back(static_cast< SwAccessibleContext * 
>(xAcc.get()));
+            vecRemove.push_back(xAcc.get());
         }
         bMarkChanged = true;
         mpSelectedFrameMap->clear();
@@ -1651,7 +1645,7 @@ SwAccessibleMap::~SwAccessibleMap()
 {
     DBG_TESTSOLARMUTEX();
 
-    uno::Reference < XAccessible > xAcc;
+    rtl::Reference < SwAccessibleContext > xAcc;
     if( mpFrameMap )
     {
         const SwRootFrame *pRootFrame = GetShell()->GetLayout();
@@ -1675,12 +1669,9 @@ SwAccessibleMap::~SwAccessibleMap()
         SwAccessibleContextMap_Impl::iterator aIter = mpFrameMap->begin();
         while( aIter != mpFrameMap->end() )
         {
-            uno::Reference < XAccessible > xTmp = (*aIter).second;
+            rtl::Reference < SwAccessibleContext > xTmp = (*aIter).second;
             if( xTmp.is() )
-            {
-                SwAccessibleContext *pTmp = static_cast< SwAccessibleContext * 
>( xTmp.get() );
-                assert(pTmp->GetMap() == nullptr); // must be disposed
-            }
+                assert(xTmp->GetMap() == nullptr); // must be disposed
             ++aIter;
         }
     }
@@ -1711,7 +1702,7 @@ uno::Reference< XAccessible > 
SwAccessibleMap::GetDocumentView_(
 {
     DBG_TESTSOLARMUTEX();
 
-    uno::Reference < XAccessible > xAcc;
+    rtl::Reference < SwAccessibleContext > xAcc;
     bool bSetVisArea = false;
 
     if( !mpFrameMap )
@@ -1744,7 +1735,7 @@ uno::Reference< XAccessible > 
SwAccessibleMap::GetDocumentView_(
 
         if( aIter != mpFrameMap->end() )
         {
-            (*aIter).second = xAcc;
+            (*aIter).second = xAcc.get();
         }
         else
         {
@@ -1791,8 +1782,8 @@ uno::Reference< XAccessible> SwAccessibleMap::GetContext( 
const SwFrame *pFrame,
 {
     DBG_TESTSOLARMUTEX();
 
-    uno::Reference < XAccessible > xAcc;
-    uno::Reference < XAccessible > xOldCursorAcc;
+    rtl::Reference < SwAccessibleContext > xAcc;
+    rtl::Reference < SwAccessibleContext > xOldCursorAcc;
     bool bOldShapeSelected = false;
 
     if( !mpFrameMap && bCreate )
@@ -1869,7 +1860,7 @@ uno::Reference< XAccessible> SwAccessibleMap::GetContext( 
const SwFrame *pFrame,
 
             if( aIter != mpFrameMap->end() )
             {
-                (*aIter).second = xAcc;
+                (*aIter).second = xAcc.get();
             }
             else
             {
@@ -1894,7 +1885,7 @@ uno::Reference< XAccessible> SwAccessibleMap::GetContext( 
const SwFrame *pFrame,
                 // currently.
 
                 xOldCursorAcc = mxCursorContext;
-                mxCursorContext = xAcc;
+                mxCursorContext = xAcc.get();
 
                 bOldShapeSelected = mbShapeSelected;
                 mbShapeSelected = false;
@@ -2103,16 +2094,15 @@ void SwAccessibleMap::RemoveContext( const SwFrame 
*pFrame )
     // Remove reference to old caret object. Though mxCursorContext
     // is a weak reference and cleared automatically, clearing it
     // directly makes sure to not keep a non-functional object.
-    uno::Reference < XAccessible > xOldAcc( mxCursorContext );
+    rtl::Reference < SwAccessibleContext > xOldAcc( mxCursorContext );
     if( xOldAcc.is() )
     {
-        SwAccessibleContext *pOldAccImpl =
-            static_cast< SwAccessibleContext *>( xOldAcc.get() );
+        SwAccessibleContext *pOldAccImpl = xOldAcc.get();
         OSL_ENSURE( pOldAccImpl->GetFrame(), "old caret context is disposed" );
         if( pOldAccImpl->GetFrame() == pFrame )
         {
             xOldAcc.clear();    // get an empty ref
-            mxCursorContext = xOldAcc;
+            mxCursorContext = xOldAcc.get();
         }
     }
 
@@ -2184,10 +2174,7 @@ void SwAccessibleMap::A11yDispose( const SwFrame *pFrame,
             SwAccessibleContextMap_Impl::iterator aIter =
                 mpFrameMap->find( aFrameOrObj.GetSwFrame() );
             if( aIter != mpFrameMap->end() )
-            {
-                uno::Reference < XAccessible > xAcc( (*aIter).second );
-                xAccImpl = static_cast< SwAccessibleContext *>( xAcc.get() );
-            }
+                xAccImpl = (*aIter).second;
         }
         if( !xAccImpl.is() && mpFrameMap )
         {
@@ -2201,11 +2188,7 @@ void SwAccessibleMap::A11yDispose( const SwFrame *pFrame,
                 SwAccessibleContextMap_Impl::iterator aIter =
                     mpFrameMap->find( pParent );
                 if( aIter != mpFrameMap->end() )
-                {
-                    uno::Reference < XAccessible > xAcc( (*aIter).second );
-                    xParentAccImpl =
-                        static_cast< SwAccessibleContext *>( xAcc.get() );
-                }
+                    xParentAccImpl = (*aIter).second;
             }
         }
         if( !xParentAccImpl.is() && !aFrameOrObj.GetSwFrame() && mpShapeMap )
@@ -2301,9 +2284,7 @@ void SwAccessibleMap::InvalidatePosOrSize( const SwFrame 
*pFrame,
             {
                 // If there is an accessible object already it is
                 // notified directly.
-                uno::Reference < XAccessible > xAcc( (*aIter).second );
-                xAccImpl =
-                    static_cast< SwAccessibleContext *>( xAcc.get() );
+                xAccImpl = (*aIter).second;
             }
         }
         if( !xAccImpl.is() )
@@ -2319,11 +2300,7 @@ void SwAccessibleMap::InvalidatePosOrSize( const SwFrame 
*pFrame,
                 SwAccessibleContextMap_Impl::iterator aIter =
                     mpFrameMap->find( pParent );
                 if( aIter != mpFrameMap->end() )
-                {
-                    uno::Reference < XAccessible > xAcc( (*aIter).second );
-                    xParentAccImpl =
-                        static_cast< SwAccessibleContext *>( xAcc.get() );
-                }
+                    xParentAccImpl = (*aIter).second;
             }
         }
     }
@@ -2423,7 +2400,7 @@ void SwAccessibleMap::InvalidateContent( const SwFrame 
*pFrame )
     if (!mpFrameMap)
         return;
 
-    uno::Reference < XAccessible > xAcc;
+    rtl::Reference < SwAccessibleContext > xAcc;
     SwAccessibleContextMap_Impl::iterator aIter =
         mpFrameMap->find( aFrameOrObj.GetSwFrame() );
     if( aIter != mpFrameMap->end() )
@@ -2432,19 +2409,17 @@ void SwAccessibleMap::InvalidateContent( const SwFrame 
*pFrame )
     if( !xAcc.is() )
         return;
 
-    SwAccessibleContext *pAccImpl =
-        static_cast< SwAccessibleContext *>( xAcc.get() );
     if( GetShell()->ActionPend() )
     {
         SwAccessibleEvent_Impl aEvent(
-            SwAccessibleEvent_Impl::INVALID_CONTENT, pAccImpl,
+            SwAccessibleEvent_Impl::INVALID_CONTENT, xAcc.get(),
             std::move(aFrameOrObj) );
         AppendEvent( aEvent );
     }
     else
     {
         FireEvents();
-        pAccImpl->InvalidateContent();
+        xAcc->InvalidateContent();
     }
 }
 
@@ -2459,7 +2434,7 @@ void SwAccessibleMap::InvalidateAttr( const SwTextFrame& 
rTextFrame )
     if (!mpFrameMap)
         return;
 
-    uno::Reference < XAccessible > xAcc;
+    rtl::Reference < SwAccessibleContext > xAcc;
     SwAccessibleContextMap_Impl::iterator aIter =
         mpFrameMap->find( aFrameOrObj.GetSwFrame() );
     if( aIter != mpFrameMap->end() )
@@ -2468,19 +2443,17 @@ void SwAccessibleMap::InvalidateAttr( const 
SwTextFrame& rTextFrame )
     if( !xAcc.is() )
         return;
 
-    SwAccessibleContext *pAccImpl =
-        static_cast< SwAccessibleContext *>( xAcc.get() );
     if( GetShell()->ActionPend() )
     {
         SwAccessibleEvent_Impl aEvent( SwAccessibleEvent_Impl::INVALID_ATTR,
-                                       pAccImpl, std::move(aFrameOrObj) );
+                                       xAcc.get(), std::move(aFrameOrObj) );
         aEvent.SetStates( AccessibleStates::TEXT_ATTRIBUTE_CHANGED );
         AppendEvent( aEvent );
     }
     else
     {
         FireEvents();
-        pAccImpl->InvalidateAttr();
+        xAcc->InvalidateAttr();
     }
 }
 
@@ -2518,13 +2491,13 @@ void SwAccessibleMap::InvalidateCursorPosition( const 
SwFrame *pFrame )
     OSL_ENSURE( bShapeSelected || 
aFrameOrObj.IsAccessible(GetShell()->IsPreview()),
             "frame is not accessible" );
 
-    uno::Reference < XAccessible > xOldAcc;
-    uno::Reference < XAccessible > xAcc;
+    rtl::Reference < SwAccessibleContext > xOldAcc;
+    rtl::Reference < SwAccessibleContext > xAcc;
     bool bOldShapeSelected = false;
 
     {
         xOldAcc = mxCursorContext;
-        mxCursorContext = xAcc; // clear reference
+        mxCursorContext = xAcc.get(); // clear reference
 
         bOldShapeSelected = mbShapeSelected;
         mbShapeSelected = bShapeSelected;
@@ -2579,7 +2552,7 @@ void SwAccessibleMap::InvalidateCursorPosition( const 
SwFrame *pFrame )
                         xAcc = xOldAcc; // make sure at least one
                 }
                 if( !xAcc.is() )
-                    xAcc = GetContext( aFrameOrObj.GetSwFrame() );
+                    xAcc = GetContextImpl( aFrameOrObj.GetSwFrame() );
             }
         }
         else if (bShapeSelected)
@@ -2717,11 +2690,10 @@ void SwAccessibleMap::InvalidateFocus()
         }
     }
 
-    uno::Reference < XAccessible > xAcc = mxCursorContext;
+    rtl::Reference < SwAccessibleContext > xAcc = mxCursorContext;
     if( xAcc.is() )
     {
-        SwAccessibleContext *pAccImpl = static_cast< SwAccessibleContext *>( 
xAcc.get() );
-        pAccImpl->InvalidateFocus();
+        xAcc->InvalidateFocus();
     }
     else
     {
@@ -2733,8 +2705,7 @@ void SwAccessibleMap::SetCursorContext(
         const ::rtl::Reference < SwAccessibleContext >& rCursorContext )
 {
     DBG_TESTSOLARMUTEX();
-    uno::Reference < XAccessible > xAcc( rCursorContext );
-    mxCursorContext = xAcc;
+    mxCursorContext = rCursorContext.get();
 }
 
 void SwAccessibleMap::InvalidateEditableStates( const SwFrame* _pFrame )
@@ -2777,7 +2748,7 @@ void SwAccessibleMap::InvalidateRelationSet_( const 
SwFrame* pFrame,
     if (!mpFrameMap)
         return;
 
-    uno::Reference < XAccessible > xAcc;
+    rtl::Reference < SwAccessibleContext > xAcc;
     SwAccessibleContextMap_Impl::iterator aIter =
                             mpFrameMap->find( aFrameOrObj.GetSwFrame() );
     if( aIter != mpFrameMap->end() )
@@ -2789,12 +2760,10 @@ void SwAccessibleMap::InvalidateRelationSet_( const 
SwFrame* pFrame,
     if( !xAcc.is() )
         return;
 
-    SwAccessibleContext *pAccImpl =
-                    static_cast< SwAccessibleContext *>( xAcc.get() );
     if( GetShell()->ActionPend() )
     {
         SwAccessibleEvent_Impl aEvent( SwAccessibleEvent_Impl::CARET_OR_STATES,
-                                       pAccImpl, SwAccessibleChild(pFrame),
+                                       xAcc.get(), SwAccessibleChild(pFrame),
                                        ( bFrom
                                          ? AccessibleStates::RELATION_FROM
                                          : AccessibleStates::RELATION_TO ) );
@@ -2803,7 +2772,7 @@ void SwAccessibleMap::InvalidateRelationSet_( const 
SwFrame* pFrame,
     else
     {
         FireEvents();
-        pAccImpl->InvalidateRelation( bFrom
+        xAcc->InvalidateRelation( bFrom
                 ? AccessibleEventId::CONTENT_FLOWS_FROM_RELATION_CHANGED
                 : AccessibleEventId::CONTENT_FLOWS_TO_RELATION_CHANGED );
     }
@@ -2836,7 +2805,7 @@ void SwAccessibleMap::InvalidateParaTextSelection( const 
SwTextFrame& _rTextFram
     if (!mpFrameMap)
         return;
 
-    uno::Reference < XAccessible > xAcc;
+    rtl::Reference < SwAccessibleContext > xAcc;
     SwAccessibleContextMap_Impl::iterator aIter =
                             mpFrameMap->find( aFrameOrObj.GetSwFrame() );
     if( aIter != mpFrameMap->end() )
@@ -2848,13 +2817,11 @@ void SwAccessibleMap::InvalidateParaTextSelection( 
const SwTextFrame& _rTextFram
     if( !xAcc.is() )
         return;
 
-    SwAccessibleContext *pAccImpl =
-                    static_cast< SwAccessibleContext *>( xAcc.get() );
     if( GetShell()->ActionPend() )
     {
         SwAccessibleEvent_Impl aEvent(
             SwAccessibleEvent_Impl::CARET_OR_STATES,
-            pAccImpl,
+            xAcc.get(),
             SwAccessibleChild( &_rTextFrame ),
             AccessibleStates::TEXT_SELECTION_CHANGED );
         AppendEvent( aEvent );
@@ -2862,7 +2829,7 @@ void SwAccessibleMap::InvalidateParaTextSelection( const 
SwTextFrame& _rTextFram
     else
     {
         FireEvents();
-        pAccImpl->InvalidateTextSelection();
+        xAcc->InvalidateTextSelection();
     }
 }
 
@@ -2876,7 +2843,7 @@ sal_Int32 SwAccessibleMap::GetChildIndex( const SwFrame& 
rParentFrame,
     SwAccessibleChild aFrameOrObj( &rParentFrame );
     if( aFrameOrObj.IsAccessible( GetShell()->IsPreview() ) )
     {
-        uno::Reference < XAccessible > xAcc;
+        rtl::Reference < SwAccessibleContext > xAcc;
 
         if( mpFrameMap )
         {
@@ -2889,13 +2856,8 @@ sal_Int32 SwAccessibleMap::GetChildIndex( const SwFrame& 
rParentFrame,
         }
 
         if( xAcc.is() )
-        {
-            SwAccessibleContext *pAccImpl =
-                            static_cast< SwAccessibleContext *>( xAcc.get() );
-
-            nIndex = pAccImpl->GetChildIndex( 
const_cast<SwAccessibleMap&>(*this),
+            nIndex = xAcc->GetChildIndex( const_cast<SwAccessibleMap&>(*this),
                                               SwAccessibleChild( &rChild ) );
-        }
     }
 
     return nIndex;
@@ -2919,8 +2881,8 @@ void SwAccessibleMap::UpdatePreview( const 
std::vector<std::unique_ptr<PreviewPa
         GetContextImpl( GetShell()->GetLayout() ).get();
     static_cast<SwAccessibleDocumentBase*>( pDoc )->SetVisArea();
 
-    uno::Reference < XAccessible > xOldAcc = mxCursorContext;
-    uno::Reference < XAccessible > xAcc;
+    rtl::Reference < SwAccessibleContext > xOldAcc = mxCursorContext;
+    rtl::Reference < SwAccessibleContext > xAcc;
 
     const SwPageFrame *pSelPage = mpPreview->GetSelPage();
     if( pSelPage && mpFrameMap )
@@ -2945,8 +2907,8 @@ void SwAccessibleMap::InvalidatePreviewSelection( 
sal_uInt16 nSelPage )
 
     mpPreview->InvalidateSelection( GetShell()->GetLayout()->GetPageByPageNum( 
nSelPage ) );
 
-    uno::Reference < XAccessible > xOldAcc = mxCursorContext;
-    uno::Reference < XAccessible > xAcc;
+    rtl::Reference < SwAccessibleContext > xOldAcc = mxCursorContext;
+    rtl::Reference < SwAccessibleContext > xAcc;
 
     const SwPageFrame *pSelPage = mpPreview->GetSelPage();
     if( pSelPage && mpFrameMap )
@@ -3272,7 +3234,7 @@ std::unique_ptr<SwAccessibleSelectedParas_Impl> 
SwAccessibleMap::BuildSelectedPa
                     SwIterator<SwTextFrame, SwTextNode, 
sw::IteratorMode::UnwrapMulti> aIter(*pTextNode);
                     for( SwTextFrame* pTextFrame = aIter.First(); pTextFrame; 
pTextFrame = aIter.Next() )
                     {
-                            uno::WeakReference < XAccessible > xWeakAcc;
+                            unotools::WeakReference < SwAccessibleContext > 
xWeakAcc;
                             SwAccessibleContextMap_Impl::iterator aMapIter =
                                                     mpFrameMap->find( 
pTextFrame );
                             if( aMapIter != mpFrameMap->end() )
@@ -3358,20 +3320,15 @@ void 
SwAccessibleMap::InvalidateTextSelectionOfAllParas()
 
             if ( bSubmitEvent )
             {
-                uno::Reference < XAccessible > xAcc( (*aIter).first );
-                if ( xAcc.is() )
+                rtl::Reference < SwAccessibleContext > xAcc( (*aIter).first );
+                if ( xAcc.is() && xAcc->GetFrame() )
                 {
-                    ::rtl::Reference < SwAccessibleContext > xAccImpl(
-                                static_cast<SwAccessibleContext*>( xAcc.get() 
) );
-                    if ( xAccImpl.is() && xAccImpl->GetFrame() )
+                    const SwTextFrame* pTextFrame = 
xAcc->GetFrame()->DynCastTextFrame();
+                    OSL_ENSURE( pTextFrame,
+                            
"<SwAccessibleMap::_SubmitTextSelectionChangedEvents()> - unexpected type of 
frame" );
+                    if ( pTextFrame )
                     {
-                        const SwTextFrame* pTextFrame = 
xAccImpl->GetFrame()->DynCastTextFrame();
-                        OSL_ENSURE( pTextFrame,
-                                
"<SwAccessibleMap::_SubmitTextSelectionChangedEvents()> - unexpected type of 
frame" );
-                        if ( pTextFrame )
-                        {
-                            InvalidateParaTextSelection( *pTextFrame );
-                        }
+                        InvalidateParaTextSelection( *pTextFrame );
                     }
                 }
             }
@@ -3386,20 +3343,15 @@ void 
SwAccessibleMap::InvalidateTextSelectionOfAllParas()
     SwAccessibleSelectedParas_Impl::iterator aIter = 
pPrevSelectedParas->begin();
     for ( ; aIter != pPrevSelectedParas->end(); ++aIter )
     {
-        uno::Reference < XAccessible > xAcc( (*aIter).first );
-        if ( xAcc.is() )
+        rtl::Reference < SwAccessibleContext > xAcc( (*aIter).first );
+        if ( xAcc.is() && xAcc->GetFrame() )
         {
-            ::rtl::Reference < SwAccessibleContext > xAccImpl(
-                        static_cast<SwAccessibleContext*>( xAcc.get() ) );
-            if ( xAccImpl.is() && xAccImpl->GetFrame() )
+            const SwTextFrame* pTextFrame = 
xAcc->GetFrame()->DynCastTextFrame();
+            OSL_ENSURE( pTextFrame,
+                    "<SwAccessibleMap::_SubmitTextSelectionChangedEvents()> - 
unexpected type of frame" );
+            if ( pTextFrame )
             {
-                const SwTextFrame* pTextFrame = 
xAccImpl->GetFrame()->DynCastTextFrame();
-                OSL_ENSURE( pTextFrame,
-                        
"<SwAccessibleMap::_SubmitTextSelectionChangedEvents()> - unexpected type of 
frame" );
-                if ( pTextFrame )
-                {
-                    InvalidateParaTextSelection( *pTextFrame );
-                }
+                InvalidateParaTextSelection( *pTextFrame );
             }
         }
     }

Reply via email to