sw/qa/extras/ooxmlimport/ooxmlimport.cxx | 2 +- writerfilter/source/dmapper/DomainMapper.cxx | 5 ++++- writerfilter/source/dmapper/DomainMapper_Impl.cxx | 11 +++++++++++ writerfilter/source/dmapper/DomainMapper_Impl.hxx | 3 +++ 4 files changed, 19 insertions(+), 2 deletions(-)
New commits: commit 91ad1017b609be6fceccd392006dd9ab60724352 Author: Justin Luth <justin_l...@sil.org> Date: Sat Jul 23 09:10:29 2016 +0300 tdf#75573 - docx don't remove frame anchor paragraph frames anchor to the following paragraph. Don't remove an empty paragraph if it follows a frame or else the frame will jump to the next page. This gets a bit complicated because headers/footers contain paragraphs that aren't really "following" the frame paragraph, and so wouldn't be used as anchor paragraphs. There may be similar sub-paragraphs for comments etc, but exceptions for those can be added when proof documents are found. Change-Id: I46988b40abe65e23a5c407dde38a951937978005 Reviewed-on: https://gerrit.libreoffice.org/27455 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Justin Luth <justin_l...@sil.org> Reviewed-by: Miklos Vajna <vmik...@collabora.co.uk> diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx index b363c7a..b904bdf 100644 --- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx +++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx @@ -1739,7 +1739,7 @@ DECLARE_OOXMLIMPORT_TEST(testTdf75573, "tdf75573_page1frame.docx") lcl_countTextFrames( mxComponent, 1 ); // the frame should be on page 1 -// CPPUNIT_ASSERT_EQUAL( OUString("lorem ipsum"), parseDump("/root/page[1]/body/section/txt/anchored/fly/txt[1]/text()") ); + CPPUNIT_ASSERT_EQUAL( OUString("lorem ipsum"), parseDump("/root/page[1]/body/section/txt/anchored/fly/txt[1]/text()") ); // the "Proprietary" style should set the vertical and horizontal anchors to the page uno::Reference<beans::XPropertySet> xPropertySet(getShape(1), uno::UNO_QUERY); diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index 9a39149..ddaafd5 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -3217,7 +3217,10 @@ void DomainMapper::lcl_utext(const sal_uInt8 * data_, size_t len) bool bSingleParagraph = m_pImpl->GetIsFirstParagraphInSection() && m_pImpl->GetIsLastParagraphInSection(); // If the paragraph contains only the section properties and it has // no runs, we should not create a paragraph for it in Writer, unless that would remove the whole section. - bool bRemove = !m_pImpl->GetParaChanged() && m_pImpl->GetParaSectpr() && !bSingleParagraph && !m_pImpl->GetIsDummyParaAddedForTableInSection(); + bool bRemove = !m_pImpl->GetParaChanged() && m_pImpl->GetParaSectpr() + && !bSingleParagraph + && !m_pImpl->GetIsDummyParaAddedForTableInSection() + && !m_pImpl->GetIsLastParagraphFramed(); if (bRemove) { // tdf#97417 delete numbering of the paragraph diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index b5dff72..5f6e05d 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -215,6 +215,7 @@ DomainMapper_Impl::DomainMapper_Impl( m_bIsFirstParaInSection( true ), m_bDummyParaAddedForTableInSection( false ), m_bTextFrameInserted(false), + m_bIsLastParagraphFramed( false ), m_bIsLastParaInSection( false ), m_bIsLastSectionGroup( false ), m_bIsInComments( false ), @@ -1187,6 +1188,16 @@ void DomainMapper_Impl::finishParagraph( const PropertyMapPtr& pPropertyMap ) } } + if( (pParaContext && pParaContext->IsFrameMode()) + || (IsInHeaderFooter() && GetIsLastParagraphFramed()) ) + { + SetIsLastParagraphFramed(true); + } + else + { + SetIsLastParagraphFramed(false); + } + m_bParaChanged = false; if (!pParaContext || !pParaContext->IsFrameMode()) { // If the paragraph is in a frame, it's not a paragraph of the section itself. diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx index ec66b20..5c34a23 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx @@ -435,6 +435,7 @@ private: bool m_bIsFirstParaInSection; bool m_bDummyParaAddedForTableInSection; bool m_bTextFrameInserted; + bool m_bIsLastParagraphFramed; bool m_bIsLastParaInSection; bool m_bIsLastSectionGroup; bool m_bIsInComments; @@ -523,6 +524,8 @@ public: bool GetIsDummyParaAddedForTableInSection() { return m_bDummyParaAddedForTableInSection;} void SetIsTextFrameInserted( bool bIsInserted ); bool GetIsTextFrameInserted() { return m_bTextFrameInserted;} + void SetIsLastParagraphFramed( bool bIsFramed ) { m_bIsLastParagraphFramed = bIsFramed; } + bool GetIsLastParagraphFramed() { return m_bIsLastParagraphFramed; } void SetParaSectpr(bool bParaSectpr); bool GetParaSectpr() { return m_bParaSectpr;} _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits