summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2012-02-22 23:58:04 +0100
committerPetr Mladek <pmladek@suse.cz>2012-02-24 15:20:30 +0100
commitaa7eee949ad48085589863c4f2e16d27ab972fa2 (patch)
tree5b494b7358e73bf7e5b7b1d4c0c7d1e55eccca70 /sw
parenteda71e73a401458acdb58a26841791de1d23c2c5 (diff)
fdo#46482: prevent duplication of frames:
SwDoc::MakeFlySection: abuse the SwDoc::mbRedlineMove flag, which (with the fix for fdo#40599) does exactly what is necessary to prevent the spurious copies. Also, remove the ugly hack to work around this problem from SwXText::convertToTextFrame. (cherry picked from commit 91fab30f3b1617024ee2eadf3c7ad1ea84d7f6dd)
Diffstat (limited to 'sw')
-rw-r--r--sw/source/core/doc/doclay.cxx3
-rw-r--r--sw/source/core/unocore/unotext.cxx6
2 files changed, 3 insertions, 6 deletions
diff --git a/sw/source/core/doc/doclay.cxx b/sw/source/core/doc/doclay.cxx
index a2ae20977827..59377f99b304 100644
--- a/sw/source/core/doc/doclay.cxx
+++ b/sw/source/core/doc/doclay.cxx
@@ -840,8 +840,10 @@ if( GetIDocumentUndoRedo().DoesUndo() )
SwPaM* pTmp = (SwPaM*)&rPam;
sal_Bool bOldFlag = mbCopyIsMove;
bool const bOldUndo = GetIDocumentUndoRedo().DoesUndo();
+ bool const bOldRedlineMove(IsRedlineMove());
mbCopyIsMove = sal_True;
GetIDocumentUndoRedo().DoUndo(false);
+ SetRedlineMove(true);
do {
if( pTmp->HasMark() &&
*pTmp->GetPoint() != *pTmp->GetMark() )
@@ -850,6 +852,7 @@ if( GetIDocumentUndoRedo().DoesUndo() )
}
pTmp = static_cast<SwPaM*>(pTmp->GetNext());
} while ( &rPam != pTmp );
+ SetRedlineMove(bOldRedlineMove);
mbCopyIsMove = bOldFlag;
GetIDocumentUndoRedo().DoUndo(bOldUndo);
diff --git a/sw/source/core/unocore/unotext.cxx b/sw/source/core/unocore/unotext.cxx
index a562a252d264..71939e4a5159 100644
--- a/sw/source/core/unocore/unotext.cxx
+++ b/sw/source/core/unocore/unotext.cxx
@@ -1720,12 +1720,6 @@ throw (lang::IllegalArgumentException, uno::RuntimeException)
SwFmtAnchor aAnchor((*i)->GetAnchor());
aAnchor.SetAnchor(aMovePam.Start());
m_pImpl->m_pDoc->SetAttr(aAnchor, *(*i));
-
- // delete the old anchor
- SwSpzFrmFmts* pFrmFmts = m_pImpl->m_pDoc->GetSpzFrmFmts();
- // here we rely on that fact that this is a sorted list, where the last element is the newly created frame
- SwFrmFmt *pFrmFmt = (*pFrmFmts)[pFrmFmts->Count()-1];
- m_pImpl->m_pDoc->DelLayoutFmt(pFrmFmt);
}
}
}