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

Xisco Fauli (via logerrit) logerrit at kemper.freedesktop.org
Thu Oct 1 18:55:36 UTC 2020


 include/svl/undo.hxx            |    2 +-
 svl/source/undo/undo.cxx        |   12 ++++--------
 sw/source/core/undo/docundo.cxx |    6 ++++--
 3 files changed, 9 insertions(+), 11 deletions(-)

New commits:
commit 0b3ff97d7d5a1e8471e494f4141165364203c192
Author:     Xisco Fauli <xiscofauli at libreoffice.org>
AuthorDate: Thu Oct 1 16:46:11 2020 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Thu Oct 1 20:54:53 2020 +0200

    tdf#136728: Revert "tdf#136238 speed up deleting large cross page table"
    
    This reverts commit da5c289a9cae5d914937f235694fd5b0cb92547f.
    
    Change-Id: Ic6a77ec2cd3b502fb4e94159a0424340850590df
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103665
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/include/svl/undo.hxx b/include/svl/undo.hxx
index 0847d89811c0..2757967aaee4 100644
--- a/include/svl/undo.hxx
+++ b/include/svl/undo.hxx
@@ -291,7 +291,7 @@ public:
 
     /** removes the oldest Undo actions from the stack
     */
-    void            RemoveOldestUndoActions(sal_Int32 nNumToDelete);
+    void            RemoveOldestUndoAction();
 
     void dumpAsXml(xmlTextWriterPtr pWriter) const;
 
diff --git a/svl/source/undo/undo.cxx b/svl/source/undo/undo.cxx
index 46c785557416..b678fba83948 100644
--- a/svl/source/undo/undo.cxx
+++ b/svl/source/undo/undo.cxx
@@ -1123,22 +1123,18 @@ bool SfxUndoManager::HasTopUndoActionMark( UndoStackMark const i_mark )
 }
 
 
-void SfxUndoManager::RemoveOldestUndoActions(sal_Int32 nNumToDelete)
+void SfxUndoManager::RemoveOldestUndoAction()
 {
     UndoManagerGuard aGuard( *m_xData );
 
-    if ( ImplIsInListAction_Lock() && ( m_xData->pUndoArray->nCurUndoAction == 1 ) )
+    if ( IsInListAction() && ( m_xData->pUndoArray->nCurUndoAction == 1 ) )
     {
         assert(!"SfxUndoManager::RemoveOldestUndoActions: cannot remove a not-yet-closed list action!");
         return;
     }
 
-    while (nNumToDelete>0 && !m_xData->pUndoArray->maUndoActions.empty())
-    {
-        aGuard.markForDeletion( m_xData->pUndoArray->Remove( 0 ) );
-        --m_xData->pUndoArray->nCurUndoAction;
-        --nNumToDelete;
-    }
+    aGuard.markForDeletion( m_xData->pUndoArray->Remove( 0 ) );
+    --m_xData->pUndoArray->nCurUndoAction;
     ImplCheckEmptyActions();
 }
 
diff --git a/sw/source/core/undo/docundo.cxx b/sw/source/core/undo/docundo.cxx
index 8f870f347d6c..6e350836fc20 100644
--- a/sw/source/core/undo/docundo.cxx
+++ b/sw/source/core/undo/docundo.cxx
@@ -537,8 +537,10 @@ void UndoManager::AddUndoAction(std::unique_ptr<SfxUndoAction> pAction, bool bTr
     }
 
     // if the undo nodes array is too large, delete some actions
-    if (UNDO_ACTION_LIMIT < GetUndoNodes().Count())
-        RemoveOldestUndoActions(GetUndoNodes().Count() - UNDO_ACTION_LIMIT);
+    while (UNDO_ACTION_LIMIT < GetUndoNodes().Count())
+    {
+        RemoveOldestUndoAction();
+    }
 }
 
 namespace {


More information about the Libreoffice-commits mailing list