[Libreoffice-commits] core.git: Branch 'libreoffice-6-4' - sw/source

Michael Stahl (via logerrit) logerrit at kemper.freedesktop.org
Wed Jun 10 21:54:14 UTC 2020


 sw/source/core/undo/undel.cxx |   27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

New commits:
commit 5c2c03dde718b2bf627ef9ef8f985fc41454b1ab
Author:     Michael Stahl <Michael.Stahl at cib.de>
AuthorDate: Wed Jun 10 11:59:00 2020 +0200
Commit:     Thorsten Behrens <Thorsten.Behrens at CIB.de>
CommitDate: Wed Jun 10 23:53:41 2020 +0200

    tdf#132725 sw: SwUndoDelete: don't group if flys are be deleted
    
    The fly would not be deleted by CanGrouping() but would be deleted later
    in RedoImpl() via the IsAtStartOfSection() check so just force a new
    Undo action in this case.
    
    (regression from 91b2325808a75174f284c48c8b8afc118fad74e4
     and 28b77c89dfcafae82cf2a6d85731b643ff9290e5)
    
    Change-Id: I68f9f6b7fd0306bc0853a370b1030463a0024edc
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96002
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.stahl at cib.de>
    (cherry picked from commit 32c162ad1723512763b74d01eaec32c1296f3a55)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96037
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>

diff --git a/sw/source/core/undo/undel.cxx b/sw/source/core/undo/undel.cxx
index c9dc7fdae063..b12696554e65 100644
--- a/sw/source/core/undo/undel.cxx
+++ b/sw/source/core/undo/undel.cxx
@@ -562,6 +562,33 @@ bool SwUndoDelete::CanGrouping( SwDoc* pDoc, const SwPaM& rDelPam )
         rCC.isLetterNumeric( *m_aSttStr, nUChrPos ) )
         return false;
 
+    // tdf#132725 - if at-char/at-para flys would be deleted, don't group!
+    // DelContentIndex() would be called at the wrong time here, the indexes
+    // in the stored SwHistoryTextFlyCnt would be wrong when Undo is invoked
+    for (SwFrameFormat const*const pFly : *pDoc->GetSpzFrameFormats())
+    {
+        SwFormatAnchor const& rAnchor(pFly->GetAnchor());
+        switch (rAnchor.GetAnchorId())
+        {
+            case RndStdIds::FLY_AT_CHAR:
+            case RndStdIds::FLY_AT_PARA:
+            {
+                SwPosition const*const pAnchorPos(rAnchor.GetContentAnchor());
+                // can this really be null?
+                if (pAnchorPos != nullptr
+                    && ((rAnchor.GetAnchorId() == RndStdIds::FLY_AT_CHAR)
+                        ? IsDestroyFrameAnchoredAtChar(*pAnchorPos, *pStt, *pEnd)
+                        : IsSelectFrameAnchoredAtPara(*pAnchorPos, *pStt, *pEnd)))
+                {
+                    return false;
+                }
+            }
+            break;
+            default: // other types not relevant
+            break;
+        }
+    }
+
     {
         SwRedlineSaveDatas aTmpSav;
         const bool bSaved = FillSaveData( rDelPam, aTmpSav, false );


More information about the Libreoffice-commits mailing list