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

Jan-Marek Glogowski glogow at fbihome.de
Tue Sep 20 15:18:12 UTC 2016


 sw/source/ui/misc/bookmark.cxx |   14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

New commits:
commit ccb979c53931ab3f4712d0a3f7d0f844dcfc5c5d
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Tue Sep 20 17:00:44 2016 +0200

    tdf#101359 Really walk the document mark list
    
    In both functions we want to walk the current mark list and
    act on the MarkType::BOOKMARK, so mimic the behaviour of
    PopulateTable in HaveBookmarksChanged.
    
    My previous commit 96454829f7dc6480f9ddd4262bc03d5ccabadea4
    is broken and just works out of luck...
    
    Change-Id: I2f53b775208cad7e83992d1ae4fb67a41588cb92

diff --git a/sw/source/ui/misc/bookmark.cxx b/sw/source/ui/misc/bookmark.cxx
index b932883..fdf0262 100644
--- a/sw/source/ui/misc/bookmark.cxx
+++ b/sw/source/ui/misc/bookmark.cxx
@@ -249,15 +249,18 @@ bool SwInsertBookmarkDlg::HaveBookmarksChanged()
     if (pMarkAccess->getBookmarksCount() != m_nLastBookmarksCount)
         return true;
 
-    IDocumentMarkAccess::const_iterator_t ppBookmark = pMarkAccess->getBookmarksBegin();
-    for (std::pair<sw::mark::IMark*,OUString> & aTableBookmark : aTableBookmarks)
+    std::vector<std::pair<sw::mark::IMark*, OUString>>::const_iterator aListIter = aTableBookmarks.begin();
+    for (IDocumentMarkAccess::const_iterator_t ppBookmark = pMarkAccess->getBookmarksBegin();
+         ppBookmark != pMarkAccess->getBookmarksEnd(); ++ppBookmark)
     {
         if (IDocumentMarkAccess::MarkType::BOOKMARK == IDocumentMarkAccess::GetType(**ppBookmark))
         {
-            if (aTableBookmark.first != ppBookmark->get() ||
-                aTableBookmark.second != ppBookmark->get()->GetName())
+            if (aListIter == aTableBookmarks.end())
                 return true;
-            ++ppBookmark;
+            if (aListIter->first != ppBookmark->get() ||
+                aListIter->second != ppBookmark->get()->GetName())
+                return true;
+            ++aListIter;
         }
     }
     return false;
@@ -267,6 +270,7 @@ void SwInsertBookmarkDlg::PopulateTable()
 {
     aTableBookmarks.clear();
     m_pBookmarksBox->Clear();
+
     IDocumentMarkAccess* const pMarkAccess = rSh.getIDocumentMarkAccess();
     for (IDocumentMarkAccess::const_iterator_t ppBookmark = pMarkAccess->getBookmarksBegin();
          ppBookmark != pMarkAccess->getBookmarksEnd(); ++ppBookmark)


More information about the Libreoffice-commits mailing list