tdf#158221 sw: fix performance disaster in SwInsertBookmarkDlg

Moving the shell cursor without Start/EndAction results in formatting
and repainting for every bookmark :(

(regression from commit aa6ec3f796)

Change-Id: I2eb77a7a6aa48a1f218957245d75399bddb594ff
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180965
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
This commit is contained in:
Michael Stahl
2025-01-30 18:36:42 +01:00
parent 7cd00ca413
commit 163ddd7a84

View File

@@ -348,6 +348,7 @@ void SwInsertBookmarkDlg::PopulateTable()
m_aTableBookmarks.clear(); m_aTableBookmarks.clear();
m_xBookmarksBox->clear(); m_xBookmarksBox->clear();
m_rSh.StartAllAction();
IDocumentMarkAccess* const pMarkAccess = m_rSh.getIDocumentMarkAccess(); IDocumentMarkAccess* const pMarkAccess = m_rSh.getIDocumentMarkAccess();
for (auto ppBookmark = pMarkAccess->getBookmarksBegin(); for (auto ppBookmark = pMarkAccess->getBookmarksBegin();
ppBookmark != pMarkAccess->getBookmarksEnd(); ++ppBookmark) ppBookmark != pMarkAccess->getBookmarksEnd(); ++ppBookmark)
@@ -358,6 +359,7 @@ void SwInsertBookmarkDlg::PopulateTable()
m_aTableBookmarks.emplace_back(*ppBookmark, (*ppBookmark)->GetName()); m_aTableBookmarks.emplace_back(*ppBookmark, (*ppBookmark)->GetName());
} }
} }
m_rSh.EndAllAction();
m_nLastBookmarksCount = pMarkAccess->getBookmarksCount(); m_nLastBookmarksCount = pMarkAccess->getBookmarksCount();
} }