sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx |   12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

New commits:
commit 5314947eea119a1ed4960e23c61530669b97468e
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Wed Jan 24 20:18:01 2024 +0100
Commit:     Michael Stahl <michael.st...@allotropia.de>
CommitDate: Thu Jan 25 11:47:14 2024 +0100

    tdf#142806 sw: slowness if Style Inspector visible during PDF export
    
    There are loads of bookmarks in this bugdoc, WriterInspectorTextPanel
    update functions somehow iterate them all, and it's entirely pointless
    because the view doesn't repaint during store anyway.
    
    PDF export does a lot of cursor moves at the shell to get selection
    rectangles, and each one triggers the slow update in AttrChangedNotify.
    
    Also simplify, the m_pShell is already there.
    
    Change-Id: I2177db1a2ab712e8984772843bd5f995e6989a4f
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162525
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>

diff --git a/sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx 
b/sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx
index 49086fa9a04f..c6376910f1a5 100644
--- a/sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx
+++ b/sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx
@@ -758,12 +758,18 @@ IMPL_LINK(WriterInspectorTextPanel, AttrChangedNotify, 
LinkParamNone*, pLink, vo
     if (m_oldLink.IsSet())
         m_oldLink.Call(pLink);
 
+    if (m_pShell->IsViewLocked())
+    {
+        return; // tdf#142806 avoid slowdown when storing files
+    }
+
     SwDocShell* pDocSh = m_pShell->GetDoc()->GetDocShell();
     std::vector<svx::sidebar::TreeNode> aStore;
 
-    SwEditShell* pEditSh = pDocSh ? pDocSh->GetDoc()->GetEditShell() : nullptr;
-    if (pEditSh && pEditSh->GetCursor()->GetPointNode().GetTextNode())
-        UpdateTree(*pDocSh, *pEditSh, aStore, m_nParIdx);
+    if (m_pShell->GetCursor()->GetPointNode().GetTextNode())
+    {
+        UpdateTree(*pDocSh, *m_pShell, aStore, m_nParIdx);
+    }
 
     updateEntries(aStore, m_nParIdx);
 }

Reply via email to