From 496bf5a946b8f464d500ecb0f2d666d37e7188d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 31 Mar 2022 14:03:52 +0200 Subject: [PATCH] lance: Handle unspecified size or weight in setFont command We have test cases that call setFont without a specified weight, in which case we would end up parsing an empty string into a number, giving a weight of 0. This weight would in turn result in the thinnest font on the system, which presumably was not the intent. We now use default sizes and weights (similar to the default QFont constructor arguments) if we're missing those arguments to setFont. Pick-to: 6.2 6.3 5.15 Change-Id: I5a96f08cfa1b9e4f1de5edee6bf69ddd46f0ce92 Reviewed-by: Eirik Aavitsland --- tests/baseline/shared/paintcommands.cpp | 32 +++++++++++++++---------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/tests/baseline/shared/paintcommands.cpp b/tests/baseline/shared/paintcommands.cpp index 2ece71a1fcc..3f4a185e4a7 100644 --- a/tests/baseline/shared/paintcommands.cpp +++ b/tests/baseline/shared/paintcommands.cpp @@ -2144,19 +2144,27 @@ void PaintCommands::command_setFont(QRegularExpressionMatch re) { QStringList caps = re.capturedTexts(); QString family = caps.at(1); - int size = convertToInt(caps.at(2)); - int weight = translateEnum(fontWeightTable, re.captured(3).toLower(), 5); - if (weight != -1) { - switch (weight) { - case 0: weight = QFont::Light; break; - case 1: weight = QFont::Normal; break; - case 2: weight = QFont::DemiBold; break; - case 3: weight = QFont::Bold; break; - case 4: weight = QFont::Black; break; - } - } else { - weight = convertToInt(re.captured(3)); + int size = -1; // Default + QString sizeArg = caps.at(2); + if (!sizeArg.isEmpty()) + size = convertToInt(caps.at(2)); + + int weight = -1; // Default + QString weightArg = caps.at(3); + if (!weightArg.isEmpty()) { + weight = translateEnum(fontWeightTable, weightArg.toLower(), 5); + if (weight != -1) { + switch (weight) { + case 0: weight = QFont::Light; break; + case 1: weight = QFont::Normal; break; + case 2: weight = QFont::DemiBold; break; + case 3: weight = QFont::Bold; break; + case 4: weight = QFont::Black; break; + } + } else { + weight = convertToInt(weightArg); + } } bool italic = caps.at(4).toLower() == "true" || caps.at(4).toLower() == "italic";