From 2d7972e05950e822ded11a09b79be4db92ce1692 Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Fri, 12 Apr 2024 07:50:30 -0400 Subject: [PATCH] Draw list bullets/numbers with CSS text color, not palette color When CSS has been used to customize the text color, render the bullet with the same color. This is consistent with web browsers, and with Qt Quick rendering. In QTextDocumentLayoutPrivate::drawListItem(), the pen color is the text color, so use it instead of brush color. Add a baseline test for lancelot: the background and general text are customized, then some list items are customized further, and some of them have colored text spans. Repeat with different styles of numbered and bullet lists and checklists. Fixes: QTBUG-2188 Task-number: QTBUG-213 Task-number: QTBUG-57833 Pick-to: 6.5 Change-Id: I71e84d00172e4b37aef57c8badd2ec43c10113d9 Reviewed-by: Sami Shalayel (cherry picked from commit 7f48c79627663f0777df9c10d06202aea5bedac3) Reviewed-by: Qt Cherry-pick Bot --- src/gui/text/qtextdocumentlayout.cpp | 8 +-- tests/baseline/text/data/colored_list.html | 68 ++++++++++++++++++++++ 2 files changed, 71 insertions(+), 5 deletions(-) create mode 100644 tests/baseline/text/data/colored_list.html diff --git a/src/gui/text/qtextdocumentlayout.cpp b/src/gui/text/qtextdocumentlayout.cpp index baff79973f2..452f814231c 100644 --- a/src/gui/text/qtextdocumentlayout.cpp +++ b/src/gui/text/qtextdocumentlayout.cpp @@ -2216,17 +2216,15 @@ void QTextDocumentLayoutPrivate::drawListItem(const QPointF &offset, QPainter *p } case QTextListFormat::ListSquare: if (!marker) - painter->fillRect(r, brush); + painter->fillRect(r, painter->pen().brush()); break; case QTextListFormat::ListCircle: - if (!marker) { - painter->setPen(QPen(brush, 0)); + if (!marker) painter->drawEllipse(r.translated(0.5, 0.5)); // pixel align for sharper rendering - } break; case QTextListFormat::ListDisc: if (!marker) { - painter->setBrush(brush); + painter->setBrush(painter->pen().brush()); painter->setPen(Qt::NoPen); painter->drawEllipse(r); } diff --git a/tests/baseline/text/data/colored_list.html b/tests/baseline/text/data/colored_list.html new file mode 100644 index 00000000000..d1cca94460f --- /dev/null +++ b/tests/baseline/text/data/colored_list.html @@ -0,0 +1,68 @@ + + + + + + + +
    +
  • disc
  • +
  • bronze
  • +
  • red bullet, pink text
  • +
  • checked
  • +
  • unchecked
  • +
+ +
    +
  • circle
  • +
  • silver
  • +
  • grey bullet, pink text
  • +
  • checked
  • +
  • unchecked
  • +
+ +
    +
  • square
  • +
  • gold
  • +
  • yellow bullet, pink text
  • +
  • checked
  • +
  • unchecked
  • +
+ +
    +
  1. decimal
  2. +
  3. bronze decimal
  4. +
  5. red number, pink text
  6. +
+ +
    +
  1. uppercase
  2. +
  3. bronze uppercase
  4. +
  5. red letter, pink text
  6. +
+ +
    +
  1. lowercase
  2. +
  3. bronze lowercase
  4. +
  5. red letter, pink text
  6. +
+ +
    +
  1. lower roman
  2. +
  3. bronze roman
  4. +
  5. red number, pink text
  6. +
+ +
    +
  1. upper roman
  2. +
  3. bronze roman
  4. +
  5. red number, pink text
  6. +
+ +