diff options
author | László Németh <nemeth@numbertext.org> | 2020-06-12 13:14:51 +0200 |
---|---|---|
committer | Xisco Fauli <xiscofauli@libreoffice.org> | 2020-06-16 13:42:37 +0200 |
commit | eb90d729178b3acec3f0045b96e1011d57d57bb6 (patch) | |
tree | 85e17f5c2b07cfb72f6dcc4c7da4da50bc62a038 /writerfilter | |
parent | 7ed62ccc2bc436001bbf033db22ec2f19c70fdf2 (diff) |
tdf#76817: DOCX import: fix custom chapter numbering
When one of the parents of the default Heading style
has got custom paragraph style instead of the
default Heading 1 – Heading 10, apply direct numbering
again to avoid bad or missing numbering.
Change-Id: I7e94600b5ac2cbf593a95eda6c0d6cd9d731dd75
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96199
Tested-by: Jenkins
Reviewed-by: László Németh <nemeth@numbertext.org>
(cherry picked from commit de1b634a151c198584dc152676183f519c50a2da)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96212
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Diffstat (limited to 'writerfilter')
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.cxx | 2 | ||||
-rw-r--r-- | writerfilter/source/dmapper/NumberingManager.cxx | 5 | ||||
-rw-r--r-- | writerfilter/source/dmapper/NumberingManager.hxx | 5 |
3 files changed, 11 insertions, 1 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index 0fee7eb801aa..a059c623b4c9 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -1404,7 +1404,7 @@ void DomainMapper_Impl::finishParagraph( const PropertyMapPtr& pPropertyMap, con // Since LO7.0/tdf#131321 fixed the loss of numbering in styles, this OUGHT to be obsolete, // but now other new/critical LO7.0 code expects it, and perhaps some corner cases still need it as well. // So we skip it only for default outline styles, which are recognized by NumberingManager. - if (!GetCurrentParaStyleName().startsWith("Heading ")) + if (!GetCurrentParaStyleName().startsWith("Heading ") || nListLevel >= pList->GetDefaultParentLevels()) pParaContext->Insert( PROP_NUMBERING_STYLE_NAME, uno::makeAny(pList->GetStyleName()), true ); } else if ( !pList->isOutlineNumbering(nListLevel) ) diff --git a/writerfilter/source/dmapper/NumberingManager.cxx b/writerfilter/source/dmapper/NumberingManager.cxx index 916583eec02f..309ca8f46d80 100644 --- a/writerfilter/source/dmapper/NumberingManager.cxx +++ b/writerfilter/source/dmapper/NumberingManager.cxx @@ -400,6 +400,7 @@ const OUString& AbstractListDef::MapListId(OUString const& rId) ListDef::ListDef( ) : AbstractListDef( ) { + m_nDefaultParentLevels = WW_OUTLINE_MAX + 1; } ListDef::~ListDef( ) @@ -572,6 +573,10 @@ void ListDef::CreateNumberingRules( DomainMapper& rDMapper, xOutlineRules->replaceByIndex(nLevel, uno::makeAny(comphelper::containerToSequence(aLvlProps))); } + // first level with custom pStyle + if ( WW_OUTLINE_MAX + 1 == m_nDefaultParentLevels && pAbsLevel->GetParaStyle( ) ) + m_nDefaultParentLevels = nLevel; + nLevel++; } diff --git a/writerfilter/source/dmapper/NumberingManager.hxx b/writerfilter/source/dmapper/NumberingManager.hxx index 070086daa52b..6173f1431f0e 100644 --- a/writerfilter/source/dmapper/NumberingManager.hxx +++ b/writerfilter/source/dmapper/NumberingManager.hxx @@ -180,6 +180,9 @@ private: /// mapped list style name OUString m_StyleName; + /// not custom outline parent levels + sal_Int16 m_nDefaultParentLevels; + public: typedef tools::SvRef< ListDef > Pointer; @@ -194,6 +197,8 @@ public: OUString GetStyleName() const { return m_StyleName; }; OUString GetStyleName(sal_Int32 nId, css::uno::Reference<css::container::XNameContainer> const& xStyles); + sal_Int16 GetDefaultParentLevels() const { return m_nDefaultParentLevels; }; + css::uno::Sequence< css::uno::Sequence<css::beans::PropertyValue> > GetMergedPropertyValues(); void CreateNumberingRules(DomainMapper& rDMapper, css::uno::Reference<css::lang::XMultiServiceFactory> const& xFactory); |