sw/inc/accmap.hxx                |    4 ++--
 sw/source/core/access/accmap.cxx |   33 +++++++++++----------------------
 2 files changed, 13 insertions(+), 24 deletions(-)

New commits:
commit 23b9dae8e6fb530b9a966adfd440831510d9854e
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Tue Apr 22 15:28:11 2025 +0200
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Wed Apr 23 06:29:18 2025 +0200

    sw a11y: Drop extra bool var indicating non-empty vectors
    
    `bMarkChanged` is true for any code path that adds
    to either `vecAdd` or `vecRemove`.
    
    Therefore, it doesn't add any extra value:
    
    * If `vecAdd` or `vecRemove` are non-empty, `bMarkChanged` is true,
      so the code path below the check for `bMarkChanged`  which iterates
      over `vecAdd` and `vecRemove` will always be executed.
    * If `bMarkChanged` is false, the early return isn't needed, because
      iterating over 2 empty vectors also doesn't make any difference
      in comparison to not reaching that code path at all.
    
    Therefore, drop `bMarkChanged`.
    
    Change-Id: I9cb62414c8412a5d520eae416258b396db8abd2a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184447
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>

diff --git a/sw/source/core/access/accmap.cxx b/sw/source/core/access/accmap.cxx
index e48788554d3b..444eaac216a8 100644
--- a/sw/source/core/access/accmap.cxx
+++ b/sw/source/core/access/accmap.cxx
@@ -1289,7 +1289,6 @@ void SwAccessibleMap::InvalidateShapeInParaSelection()
     std::vector<SwAccessibleContext*> vecAdd;
     std::vector<SwAccessibleContext*> vecRemove;
     //Checked for Paras.
-    bool bMarkChanged = false;
     SwAccessibleContextMap mapTemp;
     if( pCursor != nullptr )
     {
@@ -1337,7 +1336,6 @@ void SwAccessibleMap::InvalidateShapeInParaSelection()
                             }
                             else
                             {
-                                bMarkChanged = true;
                                 vecAdd.push_back(xAcc.get());
                             }
 
@@ -1359,7 +1357,6 @@ void SwAccessibleMap::InvalidateShapeInParaSelection()
             ++aIter;
             vecRemove.push_back(xAcc.get());
         }
-        bMarkChanged = true;
         maSelectedFrameMap.clear();
     }
 
@@ -1371,9 +1368,6 @@ void SwAccessibleMap::InvalidateShapeInParaSelection()
     }
     mapTemp.clear();
 
-    if (!bMarkChanged)
-        return;
-
     for (SwAccessibleContext* pAccPara : vecAdd)
     {
         if (pAccPara)
commit 69565279724b581d780bbc70f9e7b14cafc438e3
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Tue Apr 22 15:21:01 2025 +0200
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Wed Apr 23 06:29:12 2025 +0200

    sw a11y: Don't use unique_ptr for selected shape map
    
    This is similar to
    
        Change-Id: I383b49fb84fc77ace80053355e9e69b144e6c72b
        Author: Michael Weghorn <m.wegh...@posteo.de>
        Date:   Tue Apr 22 14:57:59 2025 +0200
    
            sw a11y: No longer use unique_ptr for frame map
    
    , but now for SwAccessibleMap::mpSelectedFrameMap.
    
    Change-Id: I590936e5c4460a5066daf36a6dffa8562e70b03d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184446
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>

diff --git a/sw/inc/accmap.hxx b/sw/inc/accmap.hxx
index 73c3625c3491..ddad147103a6 100644
--- a/sw/inc/accmap.hxx
+++ b/sw/inc/accmap.hxx
@@ -122,8 +122,8 @@ class SwAccessibleMap final : public 
::accessibility::IAccessibleViewForwarder,
 
     void InvalidateShapeSelection();
 
-    //mpSelectedFrameMap contains the old selected objects.
-    std::unique_ptr<SwAccessibleContextMap> mpSelectedFrameMap;
+    //maSelectedFrameMap contains the old selected objects.
+    SwAccessibleContextMap maSelectedFrameMap;
 
     OUString maDocName;
 
diff --git a/sw/source/core/access/accmap.cxx b/sw/source/core/access/accmap.cxx
index e2101b29c54f..e48788554d3b 100644
--- a/sw/source/core/access/accmap.cxx
+++ b/sw/source/core/access/accmap.cxx
@@ -1331,9 +1331,9 @@ void SwAccessibleMap::InvalidateShapeInParaSelection()
                             }
                             if(!isChanged)
                             {
-                                SwAccessibleContextMap::iterator aEraseIter = 
mpSelectedFrameMap->find(pFrame);
-                                if(aEraseIter != mpSelectedFrameMap->end())
-                                    mpSelectedFrameMap->erase(aEraseIter);
+                                SwAccessibleContextMap::iterator aEraseIter = 
maSelectedFrameMap.find(pFrame);
+                                if (aEraseIter != maSelectedFrameMap.end())
+                                    maSelectedFrameMap.erase(aEraseIter);
                             }
                             else
                             {
@@ -1348,12 +1348,10 @@ void SwAccessibleMap::InvalidateShapeInParaSelection()
             }
         }
     }
-    if( !mpSelectedFrameMap )
-        mpSelectedFrameMap.reset(new SwAccessibleContextMap);
-    if( !mpSelectedFrameMap->empty() )
+    if (!maSelectedFrameMap.empty())
     {
-        SwAccessibleContextMap::iterator aIter = mpSelectedFrameMap->begin();
-        while( aIter != mpSelectedFrameMap->end() )
+        SwAccessibleContextMap::iterator aIter = maSelectedFrameMap.begin();
+        while (aIter != maSelectedFrameMap.end())
         {
             rtl::Reference < SwAccessibleContext > xAcc = (*aIter).second;
             if(xAcc.is())
@@ -1362,13 +1360,13 @@ void SwAccessibleMap::InvalidateShapeInParaSelection()
             vecRemove.push_back(xAcc.get());
         }
         bMarkChanged = true;
-        mpSelectedFrameMap->clear();
+        maSelectedFrameMap.clear();
     }
 
     SwAccessibleContextMap::iterator aIter = mapTemp.begin();
     while( aIter != mapTemp.end() )
     {
-        mpSelectedFrameMap->emplace( (*aIter).first, (*aIter).second );
+        maSelectedFrameMap.emplace((*aIter).first, (*aIter).second);
         ++aIter;
     }
     mapTemp.clear();
@@ -1944,12 +1942,9 @@ void SwAccessibleMap::RemoveContext( const SwFrame 
*pFrame )
 
     maFrameMap.erase(aIter);
 
-    if (mpSelectedFrameMap)
-    {
-        SwAccessibleContextMap::iterator aSelectedIter = 
mpSelectedFrameMap->find(pFrame);
-        if (aSelectedIter != mpSelectedFrameMap->end())
-            mpSelectedFrameMap->erase(aSelectedIter);
-    }
+    SwAccessibleContextMap::iterator aSelectedIter = 
maSelectedFrameMap.find(pFrame);
+    if (aSelectedIter != maSelectedFrameMap.end())
+        maSelectedFrameMap.erase(aSelectedIter);
 
     // Remove reference to old caret object. Though mxCursorContext
     // is a weak reference and cleared automatically, clearing it

Reply via email to