diff options
-rw-r--r-- | sw/qa/extras/uiwriter/uiwriter.cxx | 10 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.cxx | 1 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.hxx | 4 | ||||
-rw-r--r-- | writerfilter/source/dmapper/PropertyMap.cxx | 11 |
4 files changed, 21 insertions, 5 deletions
diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx index e16e78beba22..c734ba823f6e 100644 --- a/sw/qa/extras/uiwriter/uiwriter.cxx +++ b/sw/qa/extras/uiwriter/uiwriter.cxx @@ -1021,7 +1021,15 @@ void SwUiWriterTest::testDOCXAutoTextMultiple() // first line SwNode& rNode = aStart.GetNode(); - CPPUNIT_ASSERT_EQUAL(OUString("Another "), rNode.GetTextNode()->GetText()); + CPPUNIT_ASSERT(rNode.IsTextNode()); + SwTextNode& rTextNode = *rNode.GetTextNode(); + CPPUNIT_ASSERT_EQUAL(OUString("Another "), rTextNode.GetText()); + + // Make sure that autotext does not set a custom page style, leading to an unexpected page break + // on insertion. + // Without the accompanying fix in place, this test would have failed: the text node had an + // attribute set containing a page style item. + CPPUNIT_ASSERT(!rTextNode.HasSwAttrSet() || !rTextNode.GetSwAttrSet().HasItem(RES_PAGEDESC)); // last line SwNodeIndex aLast(*aDocEnd.GetNode().EndOfSectionNode(), -1); diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index 4a700758a574..5d2272cdc5bc 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -239,6 +239,7 @@ DomainMapper_Impl::DomainMapper_Impl( m_aSmartTagHandler(m_xComponentContext, m_xTextDocument), m_xInsertTextRange(rMediaDesc.getUnpackedValueOrDefault("TextInsertModeRange", uno::Reference<text::XTextRange>())), m_bIsNewDoc(!rMediaDesc.getUnpackedValueOrDefault("InsertMode", false)), + m_bIsReadGlossaries(rMediaDesc.getUnpackedValueOrDefault("ReadGlossaries", false)), m_bInTableStyleRunProps(false), m_nTableDepth(0), m_nTableCellDepth(0), diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx index 5d6f634bad10..52aeb82ab378 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx @@ -550,6 +550,7 @@ public: css::uno::Reference<css::text::XTextRange> m_xInsertTextRange; private: bool const m_bIsNewDoc; + bool const m_bIsReadGlossaries; public: DomainMapper_Impl( DomainMapper& rDMapper, @@ -918,6 +919,9 @@ public: /// If we're importing into a new document, or just pasting to an existing one. bool IsNewDoc() { return m_bIsNewDoc;} + /// If we're importing autotext. + bool IsReadGlossaries() { return m_bIsReadGlossaries;} + /// If we're inside <w:rPr>, inside <w:style w:type="table"> bool m_bInTableStyleRunProps; diff --git a/writerfilter/source/dmapper/PropertyMap.cxx b/writerfilter/source/dmapper/PropertyMap.cxx index e965db4f919b..9bc6e3a8780c 100644 --- a/writerfilter/source/dmapper/PropertyMap.cxx +++ b/writerfilter/source/dmapper/PropertyMap.cxx @@ -1585,10 +1585,13 @@ void SectionPropertyMap::CloseSectionGroup( DomainMapper_Impl& rDM_Impl ) if ( xRangeProperties.is() && rDM_Impl.IsNewDoc() ) { - xRangeProperties->setPropertyValue( - getPropertyName( PROP_PAGE_DESC_NAME ), - uno::makeAny( m_bTitlePage ? m_sFirstPageStyleName - : m_sFollowPageStyleName ) ); + // Avoid setting page style in case of autotext: so inserting the autotext at the + // end of the document does not introduce an unwanted page break. + if (!rDM_Impl.IsReadGlossaries()) + xRangeProperties->setPropertyValue( + getPropertyName( PROP_PAGE_DESC_NAME ), + uno::makeAny( m_bTitlePage ? m_sFirstPageStyleName + : m_sFollowPageStyleName ) ); if (0 <= m_nPageNumber) { |