Kaydet (Commit) 5d2b9537 authored tarafından Michael Stahl's avatar Michael Stahl Kaydeden (comit) Andras Timar

Revert "Fix single node CopyRange"

This reverts commit 9099e21b.

It causes the problem that frames anchored to the same node where
redlines start or end get duplicated during Hide.

Jan-Marek said that the original mail-merge related problem this change
was fixing is now most likely fixed differently, and the test in
testMultiPageAnchoredDraws() still passes.

(cherry picked from commit e84f0a9b)

sw: add unit test for the redline frame duplication regression
(cherry picked from commit d5ffcba0)

Change-Id: Ie84fed3f64be7696782bc557004eb18fccc5b64b
Reviewed-on: https://gerrit.libreoffice.org/18509Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst 9be1c3f6
...@@ -79,6 +79,9 @@ public: ...@@ -79,6 +79,9 @@ public:
The position can be in the same or in an another document. It can also The position can be in the same or in an another document. It can also
be within the range! be within the range!
\warning The range has to include at least two nodes or has to be a
SwDoc::IsColumnSelection!
Normally this function should work only with content nodes. But there Normally this function should work only with content nodes. But there
is a special case used by SwDoc::Paste, which starts the SwPaM at the is a special case used by SwDoc::Paste, which starts the SwPaM at the
content start node. This position doesn't contain any content: content start node. This position doesn't contain any content:
......
<?xml version="1.0" encoding="UTF-8"?>
<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
<office:meta><meta:initial-creator>ms </meta:initial-creator><meta:creation-date>2015-08-24T21:49:45.305718699</meta:creation-date><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="1" meta:paragraph-count="0" meta:word-count="0" meta:character-count="0" meta:non-whitespace-character-count="0"/><meta:generator>LibreOfficeDev/4.3.7.2$Linux_X86_64 LibreOffice_project/8a35821d8636a03b8bf4e15b48f59794652c68ba</meta:generator></office:meta>
<office:font-face-decls>
<style:font-face style:name="Lohit Devanagari1" svg:font-family="&apos;Lohit Devanagari&apos;"/>
<style:font-face style:name="Liberation Serif" svg:font-family="&apos;Liberation Serif&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
<style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
<style:font-face style:name="Lohit Devanagari" svg:font-family="&apos;Lohit Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
<style:font-face style:name="Source Han Sans CN Regular" svg:font-family="&apos;Source Han Sans CN Regular&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
</office:font-face-decls>
<office:styles>
<style:default-style style:family="graphic">
<style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="false"/>
<style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
<style:tab-stops/>
</style:paragraph-properties>
<style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="Source Han Sans CN Regular" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
</style:default-style>
<style:default-style style:family="paragraph">
<style:paragraph-properties fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
<style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="Source Han Sans CN Regular" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2"/>
</style:default-style>
<style:default-style style:family="table">
<style:table-properties table:border-model="collapsing"/>
</style:default-style>
<style:default-style style:family="table-row">
<style:table-row-properties fo:keep-together="auto"/>
</style:default-style>
<style:style style:name="Standard" style:family="paragraph" style:class="text"/>
</office:styles>
<office:automatic-styles>
<style:page-layout style:name="pm1">
<style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
<style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
</style:page-layout-properties>
<style:header-style/>
<style:footer-style/>
</style:page-layout>
<style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard">
<style:text-properties officeooo:rsid="000b01fe" officeooo:paragraph-rsid="000b01fe"/>
</style:style>
<style:style style:name="P2" style:family="paragraph" style:parent-style-name="Standard">
<style:text-properties officeooo:rsid="000b01fe" officeooo:paragraph-rsid="000b01fe"/>
</style:style>
<style:style style:name="fr1" style:family="graphic" style:parent-style-name="Frame">
<style:graphic-properties style:vertical-pos="top" style:vertical-rel="paragraph-content" style:horizontal-pos="center" style:horizontal-rel="paragraph"/>
</style:style>
</office:automatic-styles>
<office:master-styles>
<style:master-page style:name="Standard" style:page-layout-name="pm1"/>
</office:master-styles>
<office:body>
<office:text>
<text:tracked-changes>
<text:changed-region xml:id="ct52929984" text:id="ct52929984">
<text:insertion>
<office:change-info>
<dc:creator>ms </dc:creator>
<dc:date>2015-09-10T15:36:00</dc:date>
</office:change-info>
</text:insertion>
</text:changed-region>
<text:changed-region xml:id="ct58510944" text:id="ct58510944">
<text:deletion>
<office:change-info>
<dc:creator>ms </dc:creator>
<dc:date>2015-09-10T15:36:00</dc:date>
</office:change-info>
<text:p text:style-name="P1"/>
<text:p text:style-name="P1">Removed text</text:p>
</text:deletion>
</text:changed-region>
</text:tracked-changes>
<text:p text:style-name="P1"><draw:frame draw:style-name="fr1" draw:name="Frame1" text:anchor-type="char" svg:width="2cm" draw:z-index="0"><draw:text-box fo:min-height="0.499cm"><text:p text:style-name="Frame_20_contents"/></draw:text-box></draw:frame><text:change-start text:change-id="ct52929984"/>Added text<text:change-end text:change-id="ct52929984"/><text:change text:change-id="ct58510944"/></text:p>
</office:text>
</office:body>
</office:document>
...@@ -66,6 +66,7 @@ public: ...@@ -66,6 +66,7 @@ public:
//Regression test of fdo#70143 //Regression test of fdo#70143
//EDITING: undo search&replace corrupt text when searching backward //EDITING: undo search&replace corrupt text when searching backward
void testReplaceBackward(); void testReplaceBackward();
void testRedlineFrame();
void testFdo69893(); void testFdo69893();
void testFdo70807(); void testFdo70807();
void testImportRTF(); void testImportRTF();
...@@ -106,6 +107,7 @@ public: ...@@ -106,6 +107,7 @@ public:
CPPUNIT_TEST_SUITE(SwUiWriterTest); CPPUNIT_TEST_SUITE(SwUiWriterTest);
CPPUNIT_TEST(testReplaceForward); CPPUNIT_TEST(testReplaceForward);
CPPUNIT_TEST(testReplaceBackward); CPPUNIT_TEST(testReplaceBackward);
CPPUNIT_TEST(testRedlineFrame);
CPPUNIT_TEST(testFdo69893); CPPUNIT_TEST(testFdo69893);
CPPUNIT_TEST(testFdo70807); CPPUNIT_TEST(testFdo70807);
CPPUNIT_TEST(testImportRTF); CPPUNIT_TEST(testImportRTF);
...@@ -194,6 +196,31 @@ void SwUiWriterTest::testReplaceForward() ...@@ -194,6 +196,31 @@ void SwUiWriterTest::testReplaceForward()
CPPUNIT_ASSERT_EQUAL(ORIGINAL_REPLACE_CONTENT, pTextNode->GetText()); CPPUNIT_ASSERT_EQUAL(ORIGINAL_REPLACE_CONTENT, pTextNode->GetText());
} }
void SwUiWriterTest::testRedlineFrame()
{
SwDoc * pDoc(createDoc("redlineFrame.fodt"));
SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell();
uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage();
// there is exactly one frame
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xDrawPage->getCount());
sal_uInt16 nMode = pWrtShell->GetRedlineMode();
CPPUNIT_ASSERT(nMode & nsRedlineMode_t::REDLINE_SHOW_DELETE);
// hide delete redlines
pWrtShell->SetRedlineMode(nMode & ~nsRedlineMode_t::REDLINE_SHOW_DELETE);
// there is still exactly one frame
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xDrawPage->getCount());
pWrtShell->SetRedlineMode(nMode); // show again
// there is still exactly one frame
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xDrawPage->getCount());
}
void SwUiWriterTest::testFdo75110() void SwUiWriterTest::testFdo75110()
{ {
SwDoc* pDoc = createDoc("fdo75110.odt"); SwDoc* pDoc = createDoc("fdo75110.odt");
......
...@@ -1584,7 +1584,7 @@ DocumentContentOperationsManager::CopyRange( SwPaM& rPam, SwPosition& rPos, cons ...@@ -1584,7 +1584,7 @@ DocumentContentOperationsManager::CopyRange( SwPaM& rPam, SwPosition& rPos, cons
bool bColumnSel = pDoc->IsClipBoard() && pDoc->IsColumnSelection(); bool bColumnSel = pDoc->IsClipBoard() && pDoc->IsColumnSelection();
// Catch if there's no copy to do // Catch if there's no copy to do
if( !rPam.HasMark() || ( *pStt > *pEnd && !bColumnSel ) ) if( !rPam.HasMark() || ( *pStt >= *pEnd && !bColumnSel ) )
return false; return false;
// Prevent copying in Flys that are anchored in the area // Prevent copying in Flys that are anchored in the area
...@@ -3132,8 +3132,7 @@ void DocumentContentOperationsManager::CopyWithFlyInFly( ...@@ -3132,8 +3132,7 @@ void DocumentContentOperationsManager::CopyWithFlyInFly(
const SwPaM* pCopiedPaM, const SwPaM* pCopiedPaM,
const bool bMakeNewFrms, const bool bMakeNewFrms,
const bool bDelRedlines, const bool bDelRedlines,
const bool bCopyFlyAtFly, const bool bCopyFlyAtFly ) const
const bool bMergedFirstNode ) const
{ {
SwDoc* pDest = rInsPos.GetNode().GetDoc(); SwDoc* pDest = rInsPos.GetNode().GetDoc();
...@@ -3141,17 +3140,13 @@ void DocumentContentOperationsManager::CopyWithFlyInFly( ...@@ -3141,17 +3140,13 @@ void DocumentContentOperationsManager::CopyWithFlyInFly(
SwNodeIndex aSavePos( rInsPos, -1 ); SwNodeIndex aSavePos( rInsPos, -1 );
bool bEndIsEqualEndPos = rInsPos == rRg.aEnd; bool bEndIsEqualEndPos = rInsPos == rRg.aEnd;
SwNodeRange aRg( rRg ); m_rDoc.GetNodes()._CopyNodes( rRg, rInsPos, bMakeNewFrms, true );
if ( bMergedFirstNode ) ++aSavePos;
aRg.aStart++; if( bEndIsEqualEndPos )
if ( aRg.aStart <= aRg.aEnd )
m_rDoc.GetNodes()._CopyNodes( aRg, rInsPos, bMakeNewFrms, true );
if ( !bMergedFirstNode )
++aSavePos;
if ( bEndIsEqualEndPos )
const_cast<SwNodeIndex&>(rRg.aEnd) = aSavePos; const_cast<SwNodeIndex&>(rRg.aEnd) = aSavePos;
aRedlRest.Restore(); aRedlRest.Restore();
#if OSL_DEBUG_LEVEL > 0 #if OSL_DEBUG_LEVEL > 0
{ {
//JP 17.06.99: Bug 66973 - check count only if the selection is in //JP 17.06.99: Bug 66973 - check count only if the selection is in
...@@ -3165,9 +3160,9 @@ void DocumentContentOperationsManager::CopyWithFlyInFly( ...@@ -3165,9 +3160,9 @@ void DocumentContentOperationsManager::CopyWithFlyInFly(
!aTmpI.GetNode().IsEndNode() ) !aTmpI.GetNode().IsEndNode() )
{ {
// If the range starts with a SwStartNode, it isn't copied // If the range starts with a SwStartNode, it isn't copied
sal_uInt16 offset = (aRg.aStart.GetNode().GetNodeType() != ND_STARTNODE) ? 1 : 0; sal_uInt16 offset = (rRg.aStart.GetNode().GetNodeType() != ND_STARTNODE) ? 1 : 0;
OSL_ENSURE( rInsPos.GetIndex() - aSavePos.GetIndex() == OSL_ENSURE( rInsPos.GetIndex() - aSavePos.GetIndex() ==
aRg.aEnd.GetIndex() - aRg.aStart.GetIndex() - 1 + offset, rRg.aEnd.GetIndex() - rRg.aStart.GetIndex() - 1 + offset,
"An insufficient number of nodes were copied!" ); "An insufficient number of nodes were copied!" );
} }
} }
...@@ -3175,7 +3170,7 @@ void DocumentContentOperationsManager::CopyWithFlyInFly( ...@@ -3175,7 +3170,7 @@ void DocumentContentOperationsManager::CopyWithFlyInFly(
{ {
::sw::UndoGuard const undoGuard(pDest->GetIDocumentUndoRedo()); ::sw::UndoGuard const undoGuard(pDest->GetIDocumentUndoRedo());
CopyFlyInFlyImpl( rRg, nEndContentIndex, aSavePos, bCopyFlyAtFly, bMergedFirstNode ); CopyFlyInFlyImpl( rRg, nEndContentIndex, aSavePos, bCopyFlyAtFly );
} }
SwNodeRange aCpyRange( aSavePos, rInsPos ); SwNodeRange aCpyRange( aSavePos, rInsPos );
...@@ -3201,8 +3196,7 @@ void DocumentContentOperationsManager::CopyFlyInFlyImpl( ...@@ -3201,8 +3196,7 @@ void DocumentContentOperationsManager::CopyFlyInFlyImpl(
const SwNodeRange& rRg, const SwNodeRange& rRg,
const sal_Int32 nEndContentIndex, const sal_Int32 nEndContentIndex,
const SwNodeIndex& rStartIdx, const SwNodeIndex& rStartIdx,
const bool bCopyFlyAtFly, const bool bCopyFlyAtFly ) const
const bool bMergedFirstNode ) const
{ {
// First collect all Flys, sort them according to their ordering number, // First collect all Flys, sort them according to their ordering number,
// and then only copy them. This maintains the ordering numbers (which are only // and then only copy them. This maintains the ordering numbers (which are only
...@@ -3335,8 +3329,6 @@ void DocumentContentOperationsManager::CopyFlyInFlyImpl( ...@@ -3335,8 +3329,6 @@ void DocumentContentOperationsManager::CopyFlyInFlyImpl(
++aIdx; ++aIdx;
} }
if ( bMergedFirstNode )
nAnchorTextNdNumInRange--;
if ( !bAnchorTextNdFound ) if ( !bAnchorTextNdFound )
{ {
...@@ -4105,7 +4097,7 @@ bool DocumentContentOperationsManager::CopyImpl( SwPaM& rPam, SwPosition& rPos, ...@@ -4105,7 +4097,7 @@ bool DocumentContentOperationsManager::CopyImpl( SwPaM& rPam, SwPosition& rPos,
SwPosition* pEnd = rPam.End(); SwPosition* pEnd = rPam.End();
// Catch when there's no copy to do. // Catch when there's no copy to do.
if( !rPam.HasMark() || ( *pStt > *pEnd && !bColumnSel ) || if( !rPam.HasMark() || ( *pStt >= *pEnd && !bColumnSel ) ||
//JP 29.6.2001: 88963 - dont copy if inspos is in region of start to end //JP 29.6.2001: 88963 - dont copy if inspos is in region of start to end
//JP 15.11.2001: don't test inclusive the end, ever exclusive //JP 15.11.2001: don't test inclusive the end, ever exclusive
( pDoc == &m_rDoc && *pStt <= rPos && rPos < *pEnd )) ( pDoc == &m_rDoc && *pStt <= rPos && rPos < *pEnd ))
...@@ -4193,8 +4185,6 @@ bool DocumentContentOperationsManager::CopyImpl( SwPaM& rPam, SwPosition& rPos, ...@@ -4193,8 +4185,6 @@ bool DocumentContentOperationsManager::CopyImpl( SwPaM& rPam, SwPosition& rPos,
pNumRuleToPropagate = 0; pNumRuleToPropagate = 0;
} }
bool bHandledStartNode = false;
// This do/while block is only there so that we can break out of it! // This do/while block is only there so that we can break out of it!
do { do {
if( pSttTextNd ) if( pSttTextNd )
...@@ -4202,8 +4192,6 @@ bool DocumentContentOperationsManager::CopyImpl( SwPaM& rPam, SwPosition& rPos, ...@@ -4202,8 +4192,6 @@ bool DocumentContentOperationsManager::CopyImpl( SwPaM& rPam, SwPosition& rPos,
// Don't copy the beginning completely? // Don't copy the beginning completely?
if( !bCopyCollFormat || bColumnSel || pStt->nContent.GetIndex() ) if( !bCopyCollFormat || bColumnSel || pStt->nContent.GetIndex() )
{ {
bHandledStartNode = true;
SwIndex aDestIdx( rPos.nContent ); SwIndex aDestIdx( rPos.nContent );
bool bCopyOk = false; bool bCopyOk = false;
if( !pDestTextNd ) if( !pDestTextNd )
...@@ -4279,11 +4267,18 @@ bool DocumentContentOperationsManager::CopyImpl( SwPaM& rPam, SwPosition& rPos, ...@@ -4279,11 +4267,18 @@ bool DocumentContentOperationsManager::CopyImpl( SwPaM& rPam, SwPosition& rPos,
pEnd->nContent -= nCpyLen; pEnd->nContent -= nCpyLen;
} }
if( bCopyCollFormat && bOneNode ) if( bOneNode )
{ {
pSttTextNd->CopyCollFormat( *pDestTextNd ); if (bCopyCollFormat)
POP_NUMRULE_STATE {
pSttTextNd->CopyCollFormat( *pDestTextNd );
POP_NUMRULE_STATE
}
break;
} }
aRg.aStart++;
} }
} }
else if( pDestTextNd ) else if( pDestTextNd )
...@@ -4340,7 +4335,7 @@ bool DocumentContentOperationsManager::CopyImpl( SwPaM& rPam, SwPosition& rPos, ...@@ -4340,7 +4335,7 @@ bool DocumentContentOperationsManager::CopyImpl( SwPaM& rPam, SwPosition& rPos,
} }
pDestTextNd = aInsPos.GetNode().GetTextNode(); pDestTextNd = aInsPos.GetNode().GetTextNode();
if( pEndTextNd && (!bOneNode || !bHandledStartNode) ) if (pEndTextNd)
{ {
SwIndex aDestIdx( rPos.nContent ); SwIndex aDestIdx( rPos.nContent );
if( !pDestTextNd ) if( !pDestTextNd )
...@@ -4384,7 +4379,7 @@ bool DocumentContentOperationsManager::CopyImpl( SwPaM& rPam, SwPosition& rPos, ...@@ -4384,7 +4379,7 @@ bool DocumentContentOperationsManager::CopyImpl( SwPaM& rPam, SwPosition& rPos,
if( bCopyAll || aRg.aStart != aRg.aEnd ) if( bCopyAll || aRg.aStart != aRg.aEnd )
{ {
SfxItemSet aBrkSet( pDoc->GetAttrPool(), aBreakSetRange ); SfxItemSet aBrkSet( pDoc->GetAttrPool(), aBreakSetRange );
if( !bOneNode && pSttTextNd && bCopyCollFormat && pDestTextNd->HasSwAttrSet() ) if (pSttTextNd && bCopyCollFormat && pDestTextNd->HasSwAttrSet())
{ {
aBrkSet.Put( *pDestTextNd->GetpSwAttrSet() ); aBrkSet.Put( *pDestTextNd->GetpSwAttrSet() );
if( SfxItemState::SET == aBrkSet.GetItemState( RES_BREAK, false ) ) if( SfxItemState::SET == aBrkSet.GetItemState( RES_BREAK, false ) )
...@@ -4396,15 +4391,13 @@ bool DocumentContentOperationsManager::CopyImpl( SwPaM& rPam, SwPosition& rPos, ...@@ -4396,15 +4391,13 @@ bool DocumentContentOperationsManager::CopyImpl( SwPaM& rPam, SwPosition& rPos,
if( aInsPos == pEnd->nNode ) if( aInsPos == pEnd->nNode )
{ {
SwNodeIndex aSaveIdx( aInsPos, -1 ); SwNodeIndex aSaveIdx( aInsPos, -1 );
CopyWithFlyInFly( aRg, 0, aInsPos, &rPam, bMakeNewFrms, CopyWithFlyInFly( aRg, 0,aInsPos, &rPam, bMakeNewFrms, false );
false, false, bHandledStartNode );
++aSaveIdx; ++aSaveIdx;
pEnd->nNode = aSaveIdx; pEnd->nNode = aSaveIdx;
pEnd->nContent.Assign( aSaveIdx.GetNode().GetTextNode(), 0 ); pEnd->nContent.Assign( aSaveIdx.GetNode().GetTextNode(), 0 );
} }
else else
CopyWithFlyInFly( aRg, pEnd->nContent.GetIndex(), aInsPos, &rPam, CopyWithFlyInFly( aRg, pEnd->nContent.GetIndex(), aInsPos, &rPam, bMakeNewFrms, false );
bMakeNewFrms, false, false, bHandledStartNode );
bCopyBookmarks = false; bCopyBookmarks = false;
......
...@@ -896,6 +896,7 @@ SwNodeIndex SwDoc::AppendDoc(const SwDoc& rSource, sal_uInt16 const nStartPageNu ...@@ -896,6 +896,7 @@ SwNodeIndex SwDoc::AppendDoc(const SwDoc& rSource, sal_uInt16 const nStartPageNu
SwPageDesc *const pTargetPageDesc, bool const bDeletePrevious, int pageOffset) SwPageDesc *const pTargetPageDesc, bool const bDeletePrevious, int pageOffset)
{ {
// GetEndOfExtras + 1 = StartOfContent == no content node! // GetEndOfExtras + 1 = StartOfContent == no content node!
// this ensures, that we have at least two nodes in the SwPaM.
// @see IDocumentContentOperations::CopyRange // @see IDocumentContentOperations::CopyRange
SwNodeIndex aSourceIdx( rSource.GetNodes().GetEndOfExtras(), 1 ); SwNodeIndex aSourceIdx( rSource.GetNodes().GetEndOfExtras(), 1 );
SwNodeIndex aSourceEndIdx( rSource.GetNodes().GetEndOfContent(), -1 ); SwNodeIndex aSourceEndIdx( rSource.GetNodes().GetEndOfContent(), -1 );
......
...@@ -106,13 +106,11 @@ public: ...@@ -106,13 +106,11 @@ public:
const SwPaM* pCopiedPaM = NULL, const SwPaM* pCopiedPaM = NULL,
bool bMakeNewFrms = true, bool bMakeNewFrms = true,
bool bDelRedlines = true, bool bDelRedlines = true,
bool bCopyFlyAtFly = false, bool bCopyFlyAtFly = false ) const;
const bool bMergedFirstNode = false ) const;
void CopyFlyInFlyImpl( const SwNodeRange& rRg, void CopyFlyInFlyImpl( const SwNodeRange& rRg,
const sal_Int32 nEndContentIndex, const sal_Int32 nEndContentIndex,
const SwNodeIndex& rStartIdx, const SwNodeIndex& rStartIdx,
const bool bCopyFlyAtFly = false, const bool bCopyFlyAtFly = false ) const;
const bool bMergedFirstNode = false ) const;
/// Parameters for _Rst and lcl_SetTextFormatColl /// Parameters for _Rst and lcl_SetTextFormatColl
//originallyfrom docfmt.cxx //originallyfrom docfmt.cxx
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment