diff options
author | Justin Luth <justin_luth@sil.org> | 2021-04-20 11:53:29 +0200 |
---|---|---|
committer | Justin Luth <justin_luth@sil.org> | 2021-04-23 07:38:33 +0200 |
commit | 38a01322a5e02432965f5a619124a6966bab065f (patch) | |
tree | 0b82dd1372f1d61cd9559f99f6476074112e9cca /sw/source/filter | |
parent | 0e35aa3de1cb97bf5a5f9918bfe09063097e064a (diff) |
tdf#106541 doc import numbering: default nListLevel to MAXLEVEL
WW8ListManager::nMaxLevel is a valid value meaning "Body Text".
If a valid setting is provided during initialization,
you can't tell if the property set contained the setting
(or at least not so easily).
The other related items (LFOPosition and mnWW8OutlineLevel)
both use out-of-range initializers, so it just makes
sense to do the same here.
This will be especially important to see whether
inheritance should come into play.
This should effectively be a Non-Functional-Change.
Change-Id: I05a2013e72c84653a16d61652fd8f23d3f441521
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114399
Tested-by: Jenkins
Tested-by: Justin Luth <justin_luth@sil.org>
Reviewed-by: Justin Luth <justin_luth@sil.org>
Diffstat (limited to 'sw/source/filter')
-rw-r--r-- | sw/source/filter/ww8/ww8par.cxx | 4 | ||||
-rw-r--r-- | sw/source/filter/ww8/ww8par.hxx | 2 | ||||
-rw-r--r-- | sw/source/filter/ww8/ww8par2.cxx | 2 | ||||
-rw-r--r-- | sw/source/filter/ww8/ww8par3.cxx | 18 |
4 files changed, 18 insertions, 8 deletions
diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx index a2847bc568af..83995b2d5ffc 100644 --- a/sw/source/filter/ww8/ww8par.cxx +++ b/sw/source/filter/ww8/ww8par.cxx @@ -4314,7 +4314,7 @@ SwWW8ImplReader::SwWW8ImplReader(sal_uInt8 nVersionPara, SotStorage* pStorage, , m_nSwNumLevel(0xff) , m_nWwNumType(0xff) , m_pChosenWW8OutlineStyle(nullptr) - , m_nListLevel(WW8ListManager::nMaxLevel) + , m_nListLevel(MAXLEVEL) , m_bNewDoc(bNewDoc) , m_bSkipImages(bSkipImages) , m_bReadNoTable(false) @@ -6038,8 +6038,10 @@ void SwWW8ImplReader::SetOutlineStyles() } if (m_pChosenWW8OutlineStyle != nullptr + && pStyleInf->mnWW8OutlineLevel < WW8ListManager::nMaxLevel && pStyleInf->mnWW8OutlineLevel == pStyleInf->m_nListLevel) { + // LibreOffice's Chapter Numbering only works when outlineLevel == listLevel const SwNumFormat& rRule = m_pChosenWW8OutlineStyle->Get(pStyleInf->mnWW8OutlineLevel); aOutlineRule.Set(pStyleInf->mnWW8OutlineLevel, rRule); diff --git a/sw/source/filter/ww8/ww8par.hxx b/sw/source/filter/ww8/ww8par.hxx index 8d81b7877af8..97bff178f66e 100644 --- a/sw/source/filter/ww8/ww8par.hxx +++ b/sw/source/filter/ww8/ww8par.hxx @@ -273,7 +273,7 @@ public: m_nBase( 0 ), m_nFollow( 0 ), m_nLFOIndex( USHRT_MAX ), - m_nListLevel(WW8ListManager::nMaxLevel), + m_nListLevel(MAXLEVEL), mnWW8OutlineLevel( MAXLEVEL ), m_n81Flags( 0 ), m_n81BiDiFlags(0), diff --git a/sw/source/filter/ww8/ww8par2.cxx b/sw/source/filter/ww8/ww8par2.cxx index 4d005bc8ae50..facee87ec980 100644 --- a/sw/source/filter/ww8/ww8par2.cxx +++ b/sw/source/filter/ww8/ww8par2.cxx @@ -3885,7 +3885,7 @@ void WW8RStyle::PostStyle(SwWW8StyInf const &rSI, bool bOldNoImp) mpIo->m_bNoAttrImport = bOldNoImp; // reset the list-remember-fields, if used when reading styles mpIo->m_nLFOPosition = USHRT_MAX; - mpIo->m_nListLevel = WW8ListManager::nMaxLevel; + mpIo->m_nListLevel = MAXLEVEL; } void WW8RStyle::Import1Style( sal_uInt16 nNr ) diff --git a/sw/source/filter/ww8/ww8par3.cxx b/sw/source/filter/ww8/ww8par3.cxx index f3b8ad5921f9..678b9bb40183 100644 --- a/sw/source/filter/ww8/ww8par3.cxx +++ b/sw/source/filter/ww8/ww8par3.cxx @@ -1872,7 +1872,7 @@ void SwWW8ImplReader::Read_ListLevel(sal_uInt16, const sal_uInt8* pData, if( nLen < 0 ) { // the current level is finished, what should we do ? - m_nListLevel = WW8ListManager::nMaxLevel; + m_nListLevel = MAXLEVEL; if (m_xStyles && !m_bVer67) m_xStyles->mnWwNumLevel = 0; } @@ -1902,7 +1902,7 @@ void SwWW8ImplReader::Read_ListLevel(sal_uInt16, const sal_uInt8* pData, { RegisterNumFormat(m_nLFOPosition, m_nListLevel); m_nLFOPosition = USHRT_MAX; - m_nListLevel = WW8ListManager::nMaxLevel; + m_nListLevel = MAXLEVEL; } } } @@ -1917,7 +1917,7 @@ void SwWW8ImplReader::Read_LFOPosition(sal_uInt16, const sal_uInt8* pData, { // the current level is finished, what should we do ? m_nLFOPosition = USHRT_MAX; - m_nListLevel = WW8ListManager::nMaxLevel; + m_nListLevel = MAXLEVEL; } else { @@ -1992,13 +1992,20 @@ void SwWW8ImplReader::Read_LFOPosition(sal_uInt16, const sal_uInt8* pData, // here the stream data is 1-based, we subtract ONE if (m_nLFOPosition != 2047-1) //Normal ww8+ list behaviour { - if (WW8ListManager::nMaxLevel == m_nListLevel) + if (WW8ListManager::nMaxLevel <= m_nListLevel) + { + // This looks like a mistake. What should happen here? + // If iLvl is undefined, then treat as level 1? (yes - list-nolevel.doc) + // What about inheritance? (good question - inheritance completely ignored) + // What about if iLvl is specified as Body Text(nMaxLevel)? + assert(MAXLEVEL == m_nListLevel && "Looking for proof document showing a specified body text level should not become numbered."); m_nListLevel = 0; + } if (WW8ListManager::nMaxLevel > m_nListLevel) { RegisterNumFormat(m_nLFOPosition, m_nListLevel); m_nLFOPosition = USHRT_MAX; - m_nListLevel = WW8ListManager::nMaxLevel; + m_nListLevel = MAXLEVEL; } } else if (m_xPlcxMan && m_xPlcxMan->HasParaSprm(NS_sprm::LN_PAnld).pSprm) @@ -2007,6 +2014,7 @@ void SwWW8ImplReader::Read_LFOPosition(sal_uInt16, const sal_uInt8* pData, #i8114# Horrific backwards compatible ww7- lists in ww8+ docs */ + m_nListLevel = std::min<sal_uInt8>(WW8ListManager::nMaxLevel, m_nListLevel); Read_ANLevelNo(13 /*equiv ww7- sprm no*/, &m_nListLevel, 1); } } |