tdf#146168 tdf#150613 list attributes: limit hack to RTF
This fixes an ODT regression from LO 7.2's
commit 0a32371cc2f93fad7954e0fe9c48976aae6c5b9f.
The hack applies the last character formatting in the paragraph
to the numbering characters. This was a hack that existed for
DOC and DOCX and RTF in various troublesome modes for quite a while.
However, recently since 6.4ish era there have been some
improvements for DOC and DOCX, so these have been excluded and
now only RTF remains.
Most of the time an RTF file also looks like a DOC
(from a compat settings point of view),
so even RTF files usually don't have this clause apply.
In fact, I looked for the RTF files that this hack still applies to,
but couldn't find a single example. Really? Did something change?
I also looked for examples of files I will be excluding (!isOnlyRTF)
and only found tdf135973.odt and tdf146955.odt. Neither one has
character formatting on their numbered lists, so they can't
be used effectively for a unit test.
It is somewhat pointless to make a test. I don't even think we
can round-trip an RTF that has these characteristics.
Likely the best thing is to just drop the hack altogether,
especially since it would pass the unit tests now.
(I'm sure it was failing before.)
If we can't round-trip it, is there any point in having this
non-import hack in place?
Change-Id: I2f95c10e1d0a9dc53b01027e9c97e5ded29c6750
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147939
Tested-by: Jenkins
Reviewed-by: Justin Luth <jluth@mail.com>
diff --git a/sw/source/core/text/txtfld.cxx b/sw/source/core/text/txtfld.cxx
index 1c05055..5a4e722 100644
--- a/sw/source/core/text/txtfld.cxx
+++ b/sw/source/core/text/txtfld.cxx
@@ -435,7 +435,16 @@ static void checkApplyParagraphMarkFormatToNumbering(SwFont* pNumFnt, SwTextForm
// TODO remove this fallback for RTF
bool isDOC = pIDSA->get(DocumentSettingId::ADD_FLY_OFFSETS);
bool isDOCX = pIDSA->get(DocumentSettingId::ADD_VERTICAL_FLY_OFFSETS);
if (!isDOC && !isDOCX && !pSet)
// tdf#146168 this hack should now only apply to RTF. Any other format (i.e. ODT) should only
// follow this fallback hack if it was created from RTF after its current implementation in 7.2.
// This can be approximated by 128197's new 6.4.7 compat for RTF MsWordCompMinLineHeightByFly
// Anything older than this which has APPLY_PARAGRAPH_MARK_FORMAT_TO_NUMBERING
// did not experience this hack, so it shouldn't apply to ODTs created from older RTFs either.
// In short: we don't want this hack to apply unless absolutely necessary for RTF.
const bool isOnlyRTF
= !isDOC && !isDOCX && pIDSA->get(DocumentSettingId::MS_WORD_COMP_MIN_LINE_HEIGHT_BY_FLY);
if (isOnlyRTF && !pSet)
{
TextFrameIndex const nTextLen(rInf.GetTextFrame()->GetText().getLength());
SwTextNode const* pNode(nullptr);