sw/qa/extras/ooxmlexport/data/tdf104713_undefinedStyles.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 7 +++++ writerfilter/source/dmapper/StyleSheetTable.cxx | 13 +++++++++-- 3 files changed, 18 insertions(+), 2 deletions(-)
New commits: commit b8fa395288a1f3a24a4fca392afdf3a9b58373ea Author: Justin Luth <justin_l...@sil.org> Date: Fri Dec 16 19:51:55 2016 +0300 tdf#104713 writerfilter: parentless styles - only if default defined LibreOffice's default paragraph style is very different from Word's normal style? Anyway, if normal is not defined in styles.xml, then don't re-assign any other automatic styles to be based off of it, since that indicates that the style information being imported is not complete. avoids regression from commit b79b5e0df6dc5a0ba18054b0503d6fa804b69f02 Change-Id: I1bfa8505d6b89b2bba255ad727ebadbacc8d3651 Reviewed-on: https://gerrit.libreoffice.org/32103 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/ooxmlexport/data/tdf104713_undefinedStyles.docx b/sw/qa/extras/ooxmlexport/data/tdf104713_undefinedStyles.docx new file mode 100644 index 0000000..5114a06 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf104713_undefinedStyles.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx index ef5857a..a767a6e 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx @@ -357,6 +357,13 @@ DECLARE_OOXMLEXPORT_TEST(testTdf53856_conflictingStyle, "tdf53856_conflictingSty CPPUNIT_ASSERT_EQUAL(awt::FontSlant_NONE, getProperty<awt::FontSlant>(xStyle, "CharPosture")); } +DECLARE_OOXMLEXPORT_TEST(testTdf104713_undefinedStyles, "tdf104713_undefinedStyles.docx") +{ + // Normal paragraph style was not defined, so don't replace conflicting styles + uno::Reference<beans::XPropertySet> xStyle(getStyles("ParagraphStyles")->getByName("Heading 1"), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(212), getProperty<sal_Int32>(xStyle, "ParaBottomMargin")); +} + DECLARE_OOXMLEXPORT_TEST(testDrawingmlFlipv, "drawingml-flipv.docx") { // The problem was that the shape had vertical flip only, but then we added rotation as well on export. diff --git a/writerfilter/source/dmapper/StyleSheetTable.cxx b/writerfilter/source/dmapper/StyleSheetTable.cxx index c9ef060..e2ee7b6 100644 --- a/writerfilter/source/dmapper/StyleSheetTable.cxx +++ b/writerfilter/source/dmapper/StyleSheetTable.cxx @@ -267,6 +267,7 @@ struct StyleSheetTable_Impl /// Style names which should not be used without a " (user)" suffix. std::set<OUString> m_aReservedStyleNames; ListCharStylePropertyVector_t m_aListCharStylePropertyVector; + bool m_bHasImportedDefaultParaStyle; bool m_bIsNewDoc; StyleSheetTable_Impl(DomainMapper& rDMapper, uno::Reference< text::XTextDocument> const& xTextDocument, bool bIsNewDoc); @@ -289,6 +290,7 @@ StyleSheetTable_Impl::StyleSheetTable_Impl(DomainMapper& rDMapper, m_pCurrentEntry(), m_pDefaultParaProps(new PropertyMap), m_pDefaultCharProps(new PropertyMap), + m_bHasImportedDefaultParaStyle(false), m_bIsNewDoc(bIsNewDoc) { //set font height default to 10pt @@ -456,6 +458,9 @@ void StyleSheetTable::lcl_attribute(Id Name, Value & val) break; case NS_ooxml::LN_CT_Style_default: m_pImpl->m_pCurrentEntry->bIsDefaultStyle = (nIntValue != 0); + if (m_pImpl->m_pCurrentEntry->bIsDefaultStyle && m_pImpl->m_pCurrentEntry->nStyleTypeCode == STYLE_TYPE_PARA) + m_pImpl->m_bHasImportedDefaultParaStyle = true; + if (m_pImpl->m_pCurrentEntry->nStyleTypeCode != STYLE_TYPE_UNKNOWN) { beans::PropertyValue aValue; @@ -946,9 +951,13 @@ void StyleSheetTable::ApplyStyleSheets( const FontTablePtr& rFontTable ) { StyleSheetTable_Impl::SetPropertiesToDefault(xStyle); - // resolve import conflicts with built-in styles - if( pEntry->sBaseStyleIdentifier.isEmpty() && !xStyle->getParentStyle().isEmpty() ) + // resolve import conflicts with built-in styles (only if normal style has been defined) + if( m_pImpl->m_bHasImportedDefaultParaStyle + && pEntry->sBaseStyleIdentifier.isEmpty() + && !xStyle->getParentStyle().isEmpty() ) + { xStyle->setParentStyle( "Standard" ); + } } } else _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits