[Libreoffice-commits] core.git: sw/qa writerfilter/source
Justin Luth
justin_luth at sil.org
Mon Oct 3 06:26:36 UTC 2016
sw/qa/extras/ooxmlimport/data/inheritFirstHeader.docx |binary
sw/qa/extras/ooxmlimport/data/n780843b.docx |binary
sw/qa/extras/ooxmlimport/ooxmlimport.cxx | 52 +++++++++++-------
writerfilter/source/dmapper/PropertyMap.cxx | 12 ++--
4 files changed, 40 insertions(+), 24 deletions(-)
New commits:
commit fe8ec3f3f09aae165c854294ad52d6870e70ef8e
Author: Justin Luth <justin_luth at sil.org>
Date: Fri Sep 30 17:46:38 2016 +0300
n#780843 revert part of docx testcase
revert testcase for commit 211916f86585cb4f6258eb30e0474e4c21cd37f1
On import, it is impossible to know where automatic
end-of-pages will be, so it cannot be known that all the
content before the page-break will be on the first page.
Removing this testcase because Writer does not have
the capability to dynamically assign headers/footers
to continuous break sections. This test worked on this
particular document, but not on generic documents.
Replacing it with a version of the document with more
text before the continuous break, which produces the
exact opposite footer results.
Change-Id: If660edd47b4eb19798f79babe65c37e1a9848739
Reviewed-on: https://gerrit.libreoffice.org/29408
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
diff --git a/sw/qa/extras/ooxmlimport/data/inheritFirstHeader.docx b/sw/qa/extras/ooxmlimport/data/inheritFirstHeader.docx
new file mode 100644
index 0000000..e3d7d20
Binary files /dev/null and b/sw/qa/extras/ooxmlimport/data/inheritFirstHeader.docx differ
diff --git a/sw/qa/extras/ooxmlimport/data/n780843b.docx b/sw/qa/extras/ooxmlimport/data/n780843b.docx
new file mode 100644
index 0000000..2ba9ab2
Binary files /dev/null and b/sw/qa/extras/ooxmlimport/data/n780843b.docx differ
diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
index 50f587f..4c099e1 100644
--- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
@@ -971,25 +971,8 @@ DECLARE_OOXMLIMPORT_TEST(testN780853, "n780853.docx")
DECLARE_OOXMLIMPORT_TEST(testN780843, "n780843.docx")
{
- /*
- * The problem was that wrong footer was picked.
- *
- * oParas = ThisComponent.Text.createEnumeration
- * oPara = oParas.nextElement
- * oPara = oParas.nextElement
- * oPara = oParas.nextElement
- * sStyle = oPara.PageStyleName
- * oStyle = ThisComponent.StyleFamilies.PageStyles.getByName(sStyle)
- * xray oStyle.FooterText.String ' was "hidden footer"
- */
- uno::Reference< text::XTextRange > xPara = getParagraph(3);
+ uno::Reference< text::XTextRange > xPara = getParagraph(1);
OUString aStyleName = getProperty<OUString>(xPara, "PageStyleName");
- uno::Reference<beans::XPropertySet> xPageStyle(getStyles("PageStyles")->getByName(aStyleName), uno::UNO_QUERY);
- uno::Reference<text::XTextRange> xFooter = getProperty< uno::Reference<text::XTextRange> >(xPageStyle, "FooterText");
- CPPUNIT_ASSERT_EQUAL(OUString("shown footer"), xFooter->getString());
-
- xPara = getParagraph(1);
- aStyleName = getProperty<OUString>(xPara, "PageStyleName");
CPPUNIT_ASSERT_EQUAL(OUString("First Page"), aStyleName);
//tdf64372 this document should only have one page break (2 pages, not 3)
@@ -1000,6 +983,39 @@ DECLARE_OOXMLIMPORT_TEST(testN780843, "n780843.docx")
CPPUNIT_ASSERT_EQUAL(sal_Int16(2), xCursor->getPage());
}
+DECLARE_OOXMLIMPORT_TEST(testN780843b, "n780843b.docx")
+{
+ // Same document as testN780843 except there is more text before the continuous break. Now the opposite footer results should happen.
+ uno::Reference< text::XTextRange > xPara = getParagraph(3);
+ OUString aStyleName = getProperty<OUString>(xPara, "PageStyleName");
+ uno::Reference<beans::XPropertySet> xPageStyle(getStyles("PageStyles")->getByName(aStyleName), uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xFooterText = getProperty< uno::Reference<text::XTextRange> >(xPageStyle, "FooterText");
+ CPPUNIT_ASSERT_EQUAL( OUString("hidden footer"), xFooterText->getString() );
+}
+
+DECLARE_OOXMLIMPORT_TEST(testInheritFirstHeader,"inheritFirstHeader.docx")
+{
+// First page headers always link to last used first header, never to a follow header
+ uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
+ uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY);
+ uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
+
+ xCursor->jumpToLastPage();
+ OUString sPageStyleName = getProperty<OUString>( xCursor, "PageStyleName" );
+ uno::Reference<text::XText> xHeaderText = getProperty< uno::Reference<text::XText> >(getStyles("PageStyles")->getByName(sPageStyleName), "HeaderText");
+ CPPUNIT_ASSERT_EQUAL( OUString("Last Header"), xHeaderText->getString() );
+
+ xCursor->jumpToPreviousPage();
+ sPageStyleName = getProperty<OUString>( xCursor, "PageStyleName" );
+ xHeaderText = getProperty< uno::Reference<text::XText> >(getStyles("PageStyles")->getByName(sPageStyleName), "HeaderText");
+ CPPUNIT_ASSERT_EQUAL( OUString("First Header"), xHeaderText->getString() );
+
+ xCursor->jumpToPreviousPage();
+ sPageStyleName = getProperty<OUString>( xCursor, "PageStyleName" );
+ xHeaderText = getProperty< uno::Reference<text::XText> >(getStyles("PageStyles")->getByName(sPageStyleName), "HeaderText");
+ CPPUNIT_ASSERT_EQUAL( OUString("Follow Header"), xHeaderText->getString() );
+}
+
DECLARE_OOXMLIMPORT_TEST(testShadow, "imgshadow.docx")
{
/*
diff --git a/writerfilter/source/dmapper/PropertyMap.cxx b/writerfilter/source/dmapper/PropertyMap.cxx
index 6a07e9d..03198f3 100644
--- a/writerfilter/source/dmapper/PropertyMap.cxx
+++ b/writerfilter/source/dmapper/PropertyMap.cxx
@@ -1114,19 +1114,19 @@ throw ( css::beans::UnknownPropertyException,
ApplyProperties_( m_aFollowPageStyle );
}
- if( pLastContext && m_sFirstPageStyleName.isEmpty() )
- m_sFirstPageStyleName = pLastContext->GetPageStyleName( /*bFirst=*/true );
+ // FirstPageStyle may only be inherited if it will not be used or re-linked to a different follow
+ if( !m_bTitlePage && pLastContext && m_sFirstPageStyleName.isEmpty() )
+ m_sFirstPageStyleName = pLastContext->GetPageStyleName( /*bFirst=*/true );
else
{
HandleMarginsHeaderFooter( /*bFirst=*/true, rDM_Impl );
GetPageStyle( xPageStyles, xTextFactory, /*bFirst=*/true );
if( rDM_Impl.IsNewDoc() && m_aFirstPageStyle.is() )
ApplyProperties_( m_aFirstPageStyle );
- }
- GetPageStyle( xPageStyles, xTextFactory, /*bFirst=*/true );
- // Chain m_aFollowPageStyle to be after m_aFirstPageStyle
- m_aFirstPageStyle->setPropertyValue( "FollowStyle", uno::makeAny(m_sFollowPageStyleName) );
+ // Chain m_aFollowPageStyle to be after m_aFirstPageStyle
+ m_aFirstPageStyle->setPropertyValue( "FollowStyle", uno::makeAny(m_sFollowPageStyleName) );
+ }
}
void SectionPropertyMap::CloseSectionGroup( DomainMapper_Impl& rDM_Impl )
More information about the Libreoffice-commits
mailing list