diff options
author | Michael Stahl <mstahl@redhat.com> | 2012-02-22 23:58:04 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2012-02-23 15:20:44 +0000 |
commit | 2d5231041203f2471c4d2f052dde6f4808fa8344 (patch) | |
tree | 3db2fcaeef910ef7db87e1daa51df6e6616acc05 | |
parent | ab55f25ecad89e05a440770cfc8c87320ae010ef (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)
-rw-r--r-- | sw/source/core/doc/doclay.cxx | 3 | ||||
-rw-r--r-- | sw/source/core/unocore/unotext.cxx | 6 |
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); } } } |