sw/source/core/text/txtfld.cxx |    8 ++++++++
 1 file changed, 8 insertions(+)

New commits:
commit c44b0df04c798e0a0fa094b14b9ed62ebc7594df
Author:     Justin Luth <justin.l...@collabora.com>
AuthorDate: Sat Feb 27 11:33:50 2021 +0200
Commit:     Justin Luth <justin_l...@sil.org>
CommitDate: Fri Mar 12 20:10:08 2021 +0100

    tdf#135774 Char highlight: numbering: don't clear existing mxBackColor
    
    If the numbering had a specified w:shd in numbering.xml,
    then that character background should apply to the bullet point.
    However, SetDiffFnt automatically clears mxBackColor (and I'm not
    sure why - but that has been true since way back to original import).
    Well, in this section the paragraph marker properties should
    only apply if the numbering doesn't have direct formatting already.
    
    So a special step is needed to check if the font has an mxBackColor,
    and since that direct formatting has priority, re-apply it
    after SetDiffFnt has finished.
    
    (P.S. This had been done earlier for GetHighlightColor, but it was
    reverted in 7.0. From my testing, I haven't seen an example where
    it was needed, but it too is reset to null - only it isn't optional.)
    
    Again, a unit test will be challenging here, since this is a
    visual change only.
    
    Change-Id: I2be129b11b6f746ba11c19d69bf01f3174c1b64b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111675
    Tested-by: Jenkins
    Tested-by: Justin Luth <justin_l...@sil.org>
    Reviewed-by: Justin Luth <justin_l...@sil.org>

diff --git a/sw/source/core/text/txtfld.cxx b/sw/source/core/text/txtfld.cxx
index 7e5073eb9d6f..3d1bd5845bce 100644
--- a/sw/source/core/text/txtfld.cxx
+++ b/sw/source/core/text/txtfld.cxx
@@ -521,7 +521,15 @@ static void 
checkApplyParagraphMarkFormatToNumbering(SwFont* pNumFnt, SwTextForm
         }
         pItem = aIter.NextItem();
     };
+
+    // SetDiffFnt resets the background color (why?), so capture it and 
re-apply if it had a value,
+    // because an existing value should override anything inherited from the 
paragraph marker.
+    const std::optional<Color> oFontBackColor = pNumFnt->GetBackColor();
+
     pNumFnt->SetDiffFnt(pCleanedSet.get(), pIDSA);
+
+    if (oFontBackColor)
+        pNumFnt->SetBackColor(oFontBackColor);
 }
 
 static const SwRangeRedline* lcl_GetRedlineAtNodeInsertionOrDeletion( const 
SwTextNode& rTextNode )
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to