sw/qa/extras/uiwriter/data/merge-change1.odt |binary sw/qa/extras/uiwriter/data/merge-change2.odt |binary sw/qa/extras/uiwriter/uiwriter.cxx | 31 +++++++++++ sw/source/core/crsr/viscrs.cxx | 21 ++++---- sw/source/core/doc/doccomp.cxx | 70 ++++++++++----------------- 5 files changed, 71 insertions(+), 51 deletions(-)
New commits: commit 8e00e0056e3c3dfdb35206ba5061a647d821edce Author: Bjoern Michaelsen <bjoern.michael...@canonical.com> Date: Mon Dec 8 15:01:01 2014 +0100 coverity#1257107: handle these consistently Change-Id: I5f432eea235bdca05132cf553d9bc15e2b825509 diff --git a/sw/source/core/crsr/viscrs.cxx b/sw/source/core/crsr/viscrs.cxx index 80af294..13bbd29 100644 --- a/sw/source/core/crsr/viscrs.cxx +++ b/sw/source/core/crsr/viscrs.cxx @@ -538,8 +538,12 @@ void SwShellCrsr::FillRects() void SwShellCrsr::Show() { - for(SwPaM& rTmp : GetRingContainer()) - dynamic_cast<SwShellCrsr&>(rTmp).SwSelPaintRects::Show(); + for(SwPaM& rPaM : GetRingContainer()) + { + SwShellCrsr* pShCrsr = dynamic_cast<SwShellCrsr*>(&rPaM); + if(pShCrsr) + pShCrsr->SwSelPaintRects::Show(); + } } // This rectangle gets painted anew, therefore the SSelection in this @@ -558,13 +562,12 @@ void SwShellCrsr::Invalidate( const SwRect& rRect ) void SwShellCrsr::Hide() { - SwShellCrsr * pTmp = this; - // TODO: this doesnt look sane: if the dynamic_cast ever returns a nullptr, - // the next pTmp->GetNext() call is a nullptr deref - do { - if (pTmp) - pTmp->SwSelPaintRects::Hide(); - } while( this != ( pTmp = dynamic_cast<SwShellCrsr*>(pTmp->GetNext()) ) ); + for(SwPaM& rPaM : GetRingContainer()) + { + SwShellCrsr* pShCrsr = dynamic_cast<SwShellCrsr*>(&rPaM); + if(pShCrsr) + pShCrsr->SwSelPaintRects::Hide(); + } } SwCursor* SwShellCrsr::Create( SwPaM* pRing ) const commit df87cec5ad59605d057ade2a0203e590d2aadc8d Author: Bjoern Michaelsen <bjoern.michael...@canonical.com> Date: Mon Dec 8 15:00:51 2014 +0100 deque is never used Change-Id: I223c85999a0ed1a62aece67f0d730b8e2e097ac9 diff --git a/sw/source/core/doc/doccomp.cxx b/sw/source/core/doc/doccomp.cxx index 156eb08..1fab4e4 100644 --- a/sw/source/core/doc/doccomp.cxx +++ b/sw/source/core/doc/doccomp.cxx @@ -45,7 +45,6 @@ #include <vector> #include <list> -#include <deque> #include <cctype> #include <boost/scoped_array.hpp> commit 23c802b85aad6b44da7d7cb630e2e76e6da033a8 Author: Bjoern Michaelsen <bjoern.michael...@canonical.com> Date: Sat Dec 6 03:19:05 2014 +0100 make InsertRedline() non-static again Change-Id: I2eda267b56bc1548930add9c5ef83ad268f881a4 diff --git a/sw/source/core/doc/doccomp.cxx b/sw/source/core/doc/doccomp.cxx index f9af771..156eb08 100644 --- a/sw/source/core/doc/doccomp.cxx +++ b/sw/source/core/doc/doccomp.cxx @@ -1835,7 +1835,7 @@ namespace const SwRangeRedline* pSrcRedl; SwRangeRedline* pDestRedl; SaveMergeRedline( const SwNode& rDstNd, const SwRangeRedline& rSrcRedl); - static sal_uInt16 InsertRedline(const SwRangeRedline* pSrcRedl, SwRangeRedline* pDestRedl, SwPaM* pLastDestRedline); + sal_uInt16 InsertRedline(SwPaM* pLastDestRedline); }; } @@ -1865,7 +1865,7 @@ SaveMergeRedline::SaveMergeRedline( const SwNode& rDstNd, } } -sal_uInt16 SaveMergeRedline::InsertRedline(const SwRangeRedline* pSrcRedl, SwRangeRedline* pDestRedl, SwPaM* pLastDestRedline) +sal_uInt16 SaveMergeRedline::InsertRedline(SwPaM* pLastDestRedline) { sal_uInt16 nIns = 0; SwDoc* pDoc = pDestRedl->GetDoc(); @@ -2058,7 +2058,7 @@ long SwDoc::MergeDoc( const SwDoc& rDoc ) SwPaM* pLastDestRedline(nullptr); for(SaveMergeRedline& rRedline: vRedlines) { - nRet += SaveMergeRedline::InsertRedline(rRedline.pSrcRedl, rRedline.pDestRedl, pLastDestRedline); + nRet += rRedline.InsertRedline(pLastDestRedline); pLastDestRedline = rRedline.pDestRedl; } } commit a71fb1c911b7104ede9365e7b16513896492ffa8 Author: Bjoern Michaelsen <bjoern.michael...@canonical.com> Date: Sat Dec 6 03:14:36 2014 +0100 rename to simple SaveMergeRedline and put in namespace Change-Id: Ibc36dcde1778ee02b9ac173d9da8419b69854af6 diff --git a/sw/source/core/doc/doccomp.cxx b/sw/source/core/doc/doccomp.cxx index cdcbdbf..f9af771 100644 --- a/sw/source/core/doc/doccomp.cxx +++ b/sw/source/core/doc/doccomp.cxx @@ -1828,15 +1828,18 @@ long SwDoc::CompareDoc( const SwDoc& rDoc ) return nRet; } -struct _SaveMergeRedlines +namespace { - const SwRangeRedline* pSrcRedl; - SwRangeRedline* pDestRedl; - _SaveMergeRedlines( const SwNode& rDstNd, const SwRangeRedline& rSrcRedl); - static sal_uInt16 InsertRedline(const SwRangeRedline* pSrcRedl, SwRangeRedline* pDestRedl, SwPaM* pLastDestRedline); -}; + struct SaveMergeRedline + { + const SwRangeRedline* pSrcRedl; + SwRangeRedline* pDestRedl; + SaveMergeRedline( const SwNode& rDstNd, const SwRangeRedline& rSrcRedl); + static sal_uInt16 InsertRedline(const SwRangeRedline* pSrcRedl, SwRangeRedline* pDestRedl, SwPaM* pLastDestRedline); + }; +} -_SaveMergeRedlines::_SaveMergeRedlines( const SwNode& rDstNd, +SaveMergeRedline::SaveMergeRedline( const SwNode& rDstNd, const SwRangeRedline& rSrcRedl) : pSrcRedl( &rSrcRedl ) { @@ -1862,7 +1865,7 @@ _SaveMergeRedlines::_SaveMergeRedlines( const SwNode& rDstNd, } } -sal_uInt16 _SaveMergeRedlines::InsertRedline(const SwRangeRedline* pSrcRedl, SwRangeRedline* pDestRedl, SwPaM* pLastDestRedline) +sal_uInt16 SaveMergeRedline::InsertRedline(const SwRangeRedline* pSrcRedl, SwRangeRedline* pDestRedl, SwPaM* pLastDestRedline) { sal_uInt16 nIns = 0; SwDoc* pDoc = pDestRedl->GetDoc(); @@ -2021,7 +2024,7 @@ long SwDoc::MergeDoc( const SwDoc& rDoc ) // we want to get all redlines from the SourceDoc // look for all insert redlines from the SourceDoc and determine their position in the DestDoc - std::list<_SaveMergeRedlines> vRedlines; + std::list<SaveMergeRedline> vRedlines; const SwRedlineTbl& rSrcRedlTbl = rSrcDoc.getIDocumentRedlineAccess().GetRedlineTbl(); sal_uLong nEndOfExtra = rSrcDoc.GetNodes().GetEndOfExtras().GetIndex(); sal_uLong nMyEndOfExtra = GetNodes().GetEndOfExtras().GetIndex(); @@ -2038,7 +2041,7 @@ long SwDoc::MergeDoc( const SwDoc& rDoc ) // Found the position. // Then we also have to insert the redline to the line in the DestDoc. - vRedlines.push_back(_SaveMergeRedlines(*pDstNd, *pRedl)); + vRedlines.push_back(SaveMergeRedline(*pDstNd, *pRedl)); } } @@ -2053,9 +2056,9 @@ long SwDoc::MergeDoc( const SwDoc& rDoc ) nsRedlineMode_t::REDLINE_SHOW_DELETE)); SwPaM* pLastDestRedline(nullptr); - for(_SaveMergeRedlines& rRedline: vRedlines) + for(SaveMergeRedline& rRedline: vRedlines) { - nRet += _SaveMergeRedlines::InsertRedline(rRedline.pSrcRedl, rRedline.pDestRedl, pLastDestRedline); + nRet += SaveMergeRedline::InsertRedline(rRedline.pSrcRedl, rRedline.pDestRedl, pLastDestRedline); pLastDestRedline = rRedline.pDestRedl; } } commit a7afdad2bf1fdae341a914c9ba556324ad72eae0 Author: Bjoern Michaelsen <bjoern.michael...@canonical.com> Date: Sat Dec 6 03:11:49 2014 +0100 remove inheritance from Ring<> Change-Id: Ie1a958b3f3fb5797ec2eb49f6a5fc72da23ca553 diff --git a/sw/source/core/doc/doccomp.cxx b/sw/source/core/doc/doccomp.cxx index 0ec5442..cdcbdbf 100644 --- a/sw/source/core/doc/doccomp.cxx +++ b/sw/source/core/doc/doccomp.cxx @@ -1828,24 +1828,17 @@ long SwDoc::CompareDoc( const SwDoc& rDoc ) return nRet; } -class _SaveMergeRedlines; -class _SaveMergeRedlines : public sw::Ring<_SaveMergeRedlines> +struct _SaveMergeRedlines { -public: const SwRangeRedline* pSrcRedl; SwRangeRedline* pDestRedl; - _SaveMergeRedlines( const SwNode& rDstNd, - const SwRangeRedline& rSrcRedl, _SaveMergeRedlines* pRing ); - _SaveMergeRedlines* GetNext() - { return GetNextInRing(); } - _SaveMergeRedlines* GetPrev() - { return GetPrevInRing(); } - static sal_uInt16 InsertRedline(_SaveMergeRedlines* pRing, const SwRangeRedline* pSrcRedl, SwRangeRedline* pDestRedl, SwPaM* pLastDestRedline); + _SaveMergeRedlines( const SwNode& rDstNd, const SwRangeRedline& rSrcRedl); + static sal_uInt16 InsertRedline(const SwRangeRedline* pSrcRedl, SwRangeRedline* pDestRedl, SwPaM* pLastDestRedline); }; _SaveMergeRedlines::_SaveMergeRedlines( const SwNode& rDstNd, - const SwRangeRedline& rSrcRedl, _SaveMergeRedlines* pRing ) - : Ring<_SaveMergeRedlines>( pRing ), pSrcRedl( &rSrcRedl ) + const SwRangeRedline& rSrcRedl) + : pSrcRedl( &rSrcRedl ) { SwPosition aPos( rDstNd ); @@ -1869,7 +1862,7 @@ _SaveMergeRedlines::_SaveMergeRedlines( const SwNode& rDstNd, } } -sal_uInt16 _SaveMergeRedlines::InsertRedline(_SaveMergeRedlines* pRing, const SwRangeRedline* pSrcRedl, SwRangeRedline* pDestRedl, SwPaM* pLastDestRedline) +sal_uInt16 _SaveMergeRedlines::InsertRedline(const SwRangeRedline* pSrcRedl, SwRangeRedline* pDestRedl, SwPaM* pLastDestRedline) { sal_uInt16 nIns = 0; SwDoc* pDoc = pDestRedl->GetDoc(); @@ -2045,7 +2038,7 @@ long SwDoc::MergeDoc( const SwDoc& rDoc ) // Found the position. // Then we also have to insert the redline to the line in the DestDoc. - vRedlines.push_back(_SaveMergeRedlines(*pDstNd, *pRedl, nullptr)); + vRedlines.push_back(_SaveMergeRedlines(*pDstNd, *pRedl)); } } @@ -2062,7 +2055,7 @@ long SwDoc::MergeDoc( const SwDoc& rDoc ) SwPaM* pLastDestRedline(nullptr); for(_SaveMergeRedlines& rRedline: vRedlines) { - nRet += _SaveMergeRedlines::InsertRedline(&rRedline, rRedline.pSrcRedl, rRedline.pDestRedl, pLastDestRedline); + nRet += _SaveMergeRedlines::InsertRedline(rRedline.pSrcRedl, rRedline.pDestRedl, pLastDestRedline); pLastDestRedline = rRedline.pDestRedl; } } commit 9d2642d29f6d42633c3b015cae9fc8b0abe17640 Author: Bjoern Michaelsen <bjoern.michael...@canonical.com> Date: Sat Dec 6 03:02:24 2014 +0100 use a std::list<> instead of a Ring<> Change-Id: Ibc1d2deae5b0c7841ec83de880380170eadbd509 diff --git a/sw/source/core/doc/doccomp.cxx b/sw/source/core/doc/doccomp.cxx index 24b386b..0ec5442 100644 --- a/sw/source/core/doc/doccomp.cxx +++ b/sw/source/core/doc/doccomp.cxx @@ -44,7 +44,8 @@ #include <vector> -#include <set> +#include <list> +#include <deque> #include <cctype> #include <boost/scoped_array.hpp> @@ -1839,7 +1840,7 @@ public: { return GetNextInRing(); } _SaveMergeRedlines* GetPrev() { return GetPrevInRing(); } - static sal_uInt16 InsertRedline(_SaveMergeRedlines* pRing, const SwRangeRedline* pSrcRedl, SwRangeRedline* pDestRedl); + static sal_uInt16 InsertRedline(_SaveMergeRedlines* pRing, const SwRangeRedline* pSrcRedl, SwRangeRedline* pDestRedl, SwPaM* pLastDestRedline); }; _SaveMergeRedlines::_SaveMergeRedlines( const SwNode& rDstNd, @@ -1868,7 +1869,7 @@ _SaveMergeRedlines::_SaveMergeRedlines( const SwNode& rDstNd, } } -sal_uInt16 _SaveMergeRedlines::InsertRedline(_SaveMergeRedlines* pRing, const SwRangeRedline* pSrcRedl, SwRangeRedline* pDestRedl) +sal_uInt16 _SaveMergeRedlines::InsertRedline(_SaveMergeRedlines* pRing, const SwRangeRedline* pSrcRedl, SwRangeRedline* pDestRedl, SwPaM* pLastDestRedline) { sal_uInt16 nIns = 0; SwDoc* pDoc = pDestRedl->GetDoc(); @@ -1896,12 +1897,8 @@ sal_uInt16 _SaveMergeRedlines::InsertRedline(_SaveMergeRedlines* pRing, const Sw pDestRedl->GetMark()->nContent.Assign( aSaveNd.GetNode().GetCntntNode(), nSaveCnt ); - if( !pRing->unique() ) - { - SwPaM* pTmpPrev = pRing->GetPrev()->pDestRedl; - if( pTmpPrev && *pTmpPrev->GetPoint() == *pDestRedl->GetPoint() ) - *pTmpPrev->GetPoint() = *pDestRedl->GetMark(); - } + if( pLastDestRedline && *pLastDestRedline->GetPoint() == *pDestRedl->GetPoint() ) + *pLastDestRedline->GetPoint() = *pDestRedl->GetMark(); } else { @@ -2031,7 +2028,7 @@ long SwDoc::MergeDoc( const SwDoc& rDoc ) // we want to get all redlines from the SourceDoc // look for all insert redlines from the SourceDoc and determine their position in the DestDoc - _SaveMergeRedlines* pRing = 0; + std::list<_SaveMergeRedlines> vRedlines; const SwRedlineTbl& rSrcRedlTbl = rSrcDoc.getIDocumentRedlineAccess().GetRedlineTbl(); sal_uLong nEndOfExtra = rSrcDoc.GetNodes().GetEndOfExtras().GetIndex(); sal_uLong nMyEndOfExtra = GetNodes().GetEndOfExtras().GetIndex(); @@ -2048,32 +2045,26 @@ long SwDoc::MergeDoc( const SwDoc& rDoc ) // Found the position. // Then we also have to insert the redline to the line in the DestDoc. - _SaveMergeRedlines* pTmp = new _SaveMergeRedlines( - *pDstNd, *pRedl, pRing ); - if( !pRing ) - pRing = pTmp; + vRedlines.push_back(_SaveMergeRedlines(*pDstNd, *pRedl, nullptr)); } } - if( pRing ) + if( !vRedlines.empty() ) { - // Carry over all into DestDoc - rSrcDoc.getIDocumentRedlineAccess().SetRedlineMode((RedlineMode_t)(nsRedlineMode_t::REDLINE_SHOW_INSERT | nsRedlineMode_t::REDLINE_SHOW_DELETE)); + // Carry over all into DestDoc + rSrcDoc.getIDocumentRedlineAccess().SetRedlineMode((RedlineMode_t)(nsRedlineMode_t::REDLINE_SHOW_INSERT | nsRedlineMode_t::REDLINE_SHOW_DELETE)); - getIDocumentRedlineAccess().SetRedlineMode((RedlineMode_t)( + getIDocumentRedlineAccess().SetRedlineMode((RedlineMode_t)( nsRedlineMode_t::REDLINE_ON | nsRedlineMode_t::REDLINE_SHOW_INSERT | nsRedlineMode_t::REDLINE_SHOW_DELETE)); - _SaveMergeRedlines* pTmp = pRing; - - do { - nRet += pTmp->InsertRedline(pTmp, pTmp->pSrcRedl, pTmp->pDestRedl); - } while( pRing != ( pTmp = pTmp->GetNext()) ); - - while( pRing != pRing->GetNext() ) - delete pRing->GetNext(); - delete pRing; + SwPaM* pLastDestRedline(nullptr); + for(_SaveMergeRedlines& rRedline: vRedlines) + { + nRet += _SaveMergeRedlines::InsertRedline(&rRedline, rRedline.pSrcRedl, rRedline.pDestRedl, pLastDestRedline); + pLastDestRedline = rRedline.pDestRedl; + } } } commit 29a4edaee6b258f5aa5b887fe745a8dd4c4a5823 Author: Bjoern Michaelsen <bjoern.michael...@canonical.com> Date: Sat Dec 6 02:26:18 2014 +0100 use unique Change-Id: I49b9b69b66f4d8835078056b5681a1bf3760ffc9 diff --git a/sw/source/core/doc/doccomp.cxx b/sw/source/core/doc/doccomp.cxx index 937430e..24b386b 100644 --- a/sw/source/core/doc/doccomp.cxx +++ b/sw/source/core/doc/doccomp.cxx @@ -1898,7 +1898,7 @@ sal_uInt16 _SaveMergeRedlines::InsertRedline(_SaveMergeRedlines* pRing, const Sw if( !pRing->unique() ) { - SwPaM* pTmpPrev = static_cast<_SaveMergeRedlines*>(pRing->GetPrev())->pDestRedl; + SwPaM* pTmpPrev = pRing->GetPrev()->pDestRedl; if( pTmpPrev && *pTmpPrev->GetPoint() == *pDestRedl->GetPoint() ) *pTmpPrev->GetPoint() = *pDestRedl->GetMark(); } commit 01896d465a885e42d66a33a4cc88e7b1021b1a54 Author: Bjoern Michaelsen <bjoern.michael...@canonical.com> Date: Sat Dec 6 02:18:45 2014 +0100 make InsertRedline a static function Change-Id: I80c7750f88f9b20e3a2be7306c53676d373654df diff --git a/sw/source/core/doc/doccomp.cxx b/sw/source/core/doc/doccomp.cxx index 077d460..937430e 100644 --- a/sw/source/core/doc/doccomp.cxx +++ b/sw/source/core/doc/doccomp.cxx @@ -1830,16 +1830,16 @@ long SwDoc::CompareDoc( const SwDoc& rDoc ) class _SaveMergeRedlines; class _SaveMergeRedlines : public sw::Ring<_SaveMergeRedlines> { +public: const SwRangeRedline* pSrcRedl; SwRangeRedline* pDestRedl; -public: _SaveMergeRedlines( const SwNode& rDstNd, const SwRangeRedline& rSrcRedl, _SaveMergeRedlines* pRing ); - sal_uInt16 InsertRedline(); _SaveMergeRedlines* GetNext() { return GetNextInRing(); } _SaveMergeRedlines* GetPrev() { return GetPrevInRing(); } + static sal_uInt16 InsertRedline(_SaveMergeRedlines* pRing, const SwRangeRedline* pSrcRedl, SwRangeRedline* pDestRedl); }; _SaveMergeRedlines::_SaveMergeRedlines( const SwNode& rDstNd, @@ -1868,7 +1868,7 @@ _SaveMergeRedlines::_SaveMergeRedlines( const SwNode& rDstNd, } } -sal_uInt16 _SaveMergeRedlines::InsertRedline() +sal_uInt16 _SaveMergeRedlines::InsertRedline(_SaveMergeRedlines* pRing, const SwRangeRedline* pSrcRedl, SwRangeRedline* pDestRedl) { sal_uInt16 nIns = 0; SwDoc* pDoc = pDestRedl->GetDoc(); @@ -1896,9 +1896,9 @@ sal_uInt16 _SaveMergeRedlines::InsertRedline() pDestRedl->GetMark()->nContent.Assign( aSaveNd.GetNode().GetCntntNode(), nSaveCnt ); - if( GetPrev() != this ) + if( !pRing->unique() ) { - SwPaM* pTmpPrev = static_cast<_SaveMergeRedlines*>(GetPrev())->pDestRedl; + SwPaM* pTmpPrev = static_cast<_SaveMergeRedlines*>(pRing->GetPrev())->pDestRedl; if( pTmpPrev && *pTmpPrev->GetPoint() == *pDestRedl->GetPoint() ) *pTmpPrev->GetPoint() = *pDestRedl->GetMark(); } @@ -2068,7 +2068,7 @@ long SwDoc::MergeDoc( const SwDoc& rDoc ) _SaveMergeRedlines* pTmp = pRing; do { - nRet += pTmp->InsertRedline(); + nRet += pTmp->InsertRedline(pTmp, pTmp->pSrcRedl, pTmp->pDestRedl); } while( pRing != ( pTmp = pTmp->GetNext()) ); while( pRing != pRing->GetNext() ) commit 60912747087f37f919875677478dbad8165047c6 Author: Bjoern Michaelsen <bjoern.michael...@canonical.com> Date: Mon Dec 8 00:06:36 2014 +0100 test for document merge Change-Id: Ic6d10a611d9e9351eb9403e1405ec7b17293e816 diff --git a/sw/qa/extras/uiwriter/data/merge-change1.odt b/sw/qa/extras/uiwriter/data/merge-change1.odt new file mode 100644 index 0000000..02bd488 Binary files /dev/null and b/sw/qa/extras/uiwriter/data/merge-change1.odt differ diff --git a/sw/qa/extras/uiwriter/data/merge-change2.odt b/sw/qa/extras/uiwriter/data/merge-change2.odt new file mode 100644 index 0000000..3644f81 Binary files /dev/null and b/sw/qa/extras/uiwriter/data/merge-change2.odt differ diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx index 7352983..4229877 100644 --- a/sw/qa/extras/uiwriter/uiwriter.cxx +++ b/sw/qa/extras/uiwriter/uiwriter.cxx @@ -62,6 +62,7 @@ public: void testFdo85554(); void testAutoCorr(); void testFdo87005(); + void testMergeDoc(); CPPUNIT_TEST_SUITE(SwUiWriterTest); CPPUNIT_TEST(testReplaceForward); @@ -87,6 +88,7 @@ public: CPPUNIT_TEST(testFdo85554); CPPUNIT_TEST(testAutoCorr); CPPUNIT_TEST(testFdo87005); + CPPUNIT_TEST(testMergeDoc); CPPUNIT_TEST_SUITE_END(); @@ -631,6 +633,35 @@ void SwUiWriterTest::testFdo87005() assertXPath(pXmlDoc, "//Special[@nType='POR_FLY']", 2); } +void SwUiWriterTest::testMergeDoc() +{ + SwDoc* const pDoc1(createDoc("merge-change1.odt")); + + auto xDoc2Component(loadFromDesktop( + getURLFromSrc(DATA_DIRECTORY) + OUString("merge-change2.odt"), + "com.sun.star.text.TextDocument")); + auto pxDoc2Document( + dynamic_cast<SwXTextDocument *>(xDoc2Component.get())); + CPPUNIT_ASSERT(pxDoc2Document); + SwDoc* const pDoc2(pxDoc2Document->GetDocShell()->GetDoc()); + + SwEditShell* const pEditShell(pDoc1->GetEditShell()); + pEditShell->MergeDoc(*pDoc2); + + // accept all redlines + while(pEditShell->GetRedlineCount()) + pEditShell->AcceptRedline(0); + + CPPUNIT_ASSERT_EQUAL(7, getParagraphs()); + getParagraph(1, "Para One: Two Three Four Five"); + getParagraph(2, "Para Two: One Three Four Five"); + getParagraph(3, "Para Three: One Two Four Five"); + getParagraph(4, "Para Four: One Two Three Four Five"); + getParagraph(5, "Para Six: One Three Four Five"); + getParagraph(6, ""); + getParagraph(7, ""); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SwUiWriterTest); CPPUNIT_PLUGIN_IMPLEMENT(); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits