[Libreoffice-commits] core.git: sw/inc sw/source

Julien Nabet serval2412 at yahoo.fr
Mon Dec 4 06:10:16 UTC 2017


 sw/inc/PostItMgr.hxx                 |    4 ++--
 sw/source/uibase/docvw/PostItMgr.cxx |   19 ++++++++++---------
 sw/source/uibase/uno/unotxdoc.cxx    |    5 ++---
 3 files changed, 14 insertions(+), 14 deletions(-)

New commits:
commit 9634a818e8a9432db52bc8fcd534e7437e6bacee
Author: Julien Nabet <serval2412 at yahoo.fr>
Date:   Sun Dec 3 22:15:10 2017 +0100

    Replace list by vector for mvPostItFields (sw)
    
    Change-Id: I22009cd051a990cbc6e5f67a01958da889437840
    Reviewed-on: https://gerrit.libreoffice.org/45759
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Julien Nabet <serval2412 at yahoo.fr>

diff --git a/sw/inc/PostItMgr.hxx b/sw/inc/PostItMgr.hxx
index 8e60929ca4b7..f5e6f551e8c9 100644
--- a/sw/inc/PostItMgr.hxx
+++ b/sw/inc/PostItMgr.hxx
@@ -148,7 +148,7 @@ class SwPostItMgr: public SfxListener
         SwView*                         mpView;
         SwWrtShell*                     mpWrtShell;
         VclPtr<SwEditWin>               mpEditWin;
-        std::list< SwSidebarItem*>      mvPostItFields;
+        std::vector<SwSidebarItem*>     mvPostItFields;
         std::vector<SwPostItPageItem*>  mPages;
         ImplSVEvent *                   mnEventId;
         bool                            mbWaitingForCalcRects;
@@ -196,7 +196,7 @@ class SwPostItMgr: public SfxListener
         SwPostItMgr(SwView* aDoc);
         virtual ~SwPostItMgr() override;
 
-        typedef std::list< SwSidebarItem* >::const_iterator const_iterator;
+        typedef std::vector< SwSidebarItem* >::const_iterator const_iterator;
         const_iterator begin()  const { return mvPostItFields.begin(); }
         const_iterator end()    const { return mvPostItFields.end();  }
 
diff --git a/sw/source/uibase/docvw/PostItMgr.cxx b/sw/source/uibase/docvw/PostItMgr.cxx
index 4e024c731b33..f7571ffb0398 100644
--- a/sw/source/uibase/docvw/PostItMgr.cxx
+++ b/sw/source/uibase/docvw/PostItMgr.cxx
@@ -243,13 +243,14 @@ SwPostItMgr::~SwPostItMgr()
 void SwPostItMgr::CheckForRemovedPostIts()
 {
     bool bRemoved = false;
-    for(auto i = mvPostItFields.begin(); i != mvPostItFields.end(); )
+    auto currentIt = mvPostItFields.begin();
+    while(currentIt != mvPostItFields.end())
     {
-        auto it = i++;
+        auto it = currentIt++;
         if ( !(*it)->UseElement() )
         {
             SwSidebarItem* p = (*it);
-            mvPostItFields.remove(*it);
+            currentIt = mvPostItFields.erase(std::remove(mvPostItFields.begin(), mvPostItFields.end(), *it), mvPostItFields.end());
             if (GetActiveSidebarWin() == p->pPostIt)
                 SetActiveSidebarWin(nullptr);
             p->pPostIt.disposeAndClear();
@@ -573,7 +574,7 @@ bool SwPostItMgr::CalcRects()
         // show notes in right order in navigator
         //prevent Anchors during layout to overlap, e.g. when moving a frame
         if (mvPostItFields.size()>1 )
-            mvPostItFields.sort(comp_pos);
+            std::stable_sort(mvPostItFields.begin(), mvPostItFields.end(), comp_pos);
 
         // sort the items into the right page vector, so layout can be done by page
         for (auto const& pItem : mvPostItFields)
@@ -1385,7 +1386,7 @@ public:
 //Fields more than once.
 class FieldDocWatchingStack : public SfxListener
 {
-    std::list<SwSidebarItem*>& l;
+    std::vector<SwSidebarItem*>& sidebarItemVector;
     std::vector<const SwFormatField*> v;
     SwDocShell& m_rDocShell;
     FilterFunctor& m_rFilter;
@@ -1425,8 +1426,8 @@ class FieldDocWatchingStack : public SfxListener
     }
 
 public:
-    FieldDocWatchingStack(std::list<SwSidebarItem*>& in, SwDocShell &rDocShell, FilterFunctor& rFilter)
-        : l(in)
+    FieldDocWatchingStack(std::vector<SwSidebarItem*>& in, SwDocShell &rDocShell, FilterFunctor& rFilter)
+        : sidebarItemVector(in)
         , m_rDocShell(rDocShell)
         , m_rFilter(rFilter)
     {
@@ -1437,8 +1438,8 @@ public:
     {
         EndListeningToAllFields();
         v.clear();
-        v.reserve(l.size());
-        for (auto const& p : l)
+        v.reserve(sidebarItemVector.size());
+        for (auto const& p : sidebarItemVector)
         {
             const SwFormatField& rField = p->GetFormatField();
             if (!m_rFilter(&rField))
diff --git a/sw/source/uibase/uno/unotxdoc.cxx b/sw/source/uibase/uno/unotxdoc.cxx
index a6431a67975f..7a734e61112a 100644
--- a/sw/source/uibase/uno/unotxdoc.cxx
+++ b/sw/source/uibase/uno/unotxdoc.cxx
@@ -3266,10 +3266,9 @@ OUString SwXTextDocument::getPostIts()
 {
     SolarMutexGuard aGuard;
     boost::property_tree::ptree aAnnotations;
-    for (std::list<SwSidebarItem*>::const_iterator i = pDocShell->GetView()->GetPostItMgr()->begin();
-         i != pDocShell->GetView()->GetPostItMgr()->end(); ++i )
+    for (auto const& sidebarItem : *pDocShell->GetView()->GetPostItMgr())
     {
-        sw::annotation::SwAnnotationWin* pWin = (*i)->pPostIt.get();
+        sw::annotation::SwAnnotationWin* pWin = sidebarItem->pPostIt.get();
 
         const SwPostItField* pField = pWin->GetPostItField();
         const SwRect& aRect = pWin->GetAnchorRect();


More information about the Libreoffice-commits mailing list