writerfilter/source/dmapper/DomainMapper.cxx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)
New commits: commit b87c7eb674dfc4ee76fa48af67da6cb13a8d6aa6 Author: Justin Luth <justin_l...@sil.org> AuthorDate: Wed Sep 1 14:12:51 2021 +0200 Commit: Miklos Vajna <vmik...@collabora.com> CommitDate: Thu Sep 2 09:08:01 2021 +0200 tdf#137363 DOCX filter: no NUMBERING_LEVEL 9(no-level) in styles The only real (initial) reason for setting PROP_NUMBERING_LEVEL in the style was to round-trip it so it didn't get lost. It does kinda give a nice side benefit in UI, where the style can now set the listLevel at the same time as turning numbering on (at least on the second try.) However, 9 ends up meaning LEVEL 10 in LO UI, instead of NO LEVEL. So eliminate that value from round-trippability, since LO has no correlating NO LEVEL value possible for that PROP. The UI is too broken and inconsistent for any attempt at a unit test. Change-Id: Ibd9cea2ec10e85651f9f6643ad1b49ebf9babe12 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121448 Tested-by: Jenkins Reviewed-by: Justin Luth <justin_l...@sil.org> Reviewed-by: Miklos Vajna <vmik...@collabora.com> diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index 6b940f02e577..913730f79bee 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -1316,7 +1316,7 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, const PropertyMapPtr& rContext ) rContext->Insert(PROP_BREAK_TYPE, uno::makeAny(nIntValue ? style::BreakType_PAGE_BEFORE : style::BreakType_NONE), /*bOverwrite=*/bool(nIntValue)); break; case NS_ooxml::LN_CT_NumPr_ilvl: - if (nIntValue < 0 || 10 <= nIntValue) // Writer can't do everything + if (nIntValue < 0 || 10 <= nIntValue) { SAL_INFO("writerfilter", "unsupported numbering level " << nIntValue); @@ -1329,7 +1329,13 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, const PropertyMapPtr& rContext ) if (pStyleSheetPropertyMap) pStyleSheetPropertyMap->SetListLevel( static_cast<sal_Int16>(nIntValue) ); } - rContext->Insert(PROP_NUMBERING_LEVEL, uno::makeAny(static_cast<sal_Int16>(nIntValue))); + // 0-8 are the 9 levels that Microsoft supports. (LO supports 10 levels). + // 9 indicates "no numbering", for which LO has no corresponding concept, + // and so it will be treated as the 10th level. + // finishParagraph() will convert the 9 into "no numbering" for direct formating. + // (Styles only use this PROP for round-tripping and UI, but cannot trust it for import) + if (!IsStyleSheetImport() || nIntValue != 9) + rContext->Insert(PROP_NUMBERING_LEVEL, uno::makeAny(static_cast<sal_Int16>(nIntValue))); break; case NS_ooxml::LN_CT_NumPr_numId: {