aboutsummaryrefslogtreecommitdiffstats
path: root/src/labs/stylekit/qqstylekitreader.cpp
diff options
context:
space:
mode:
authorDoris Verria <doris.verria@qt.io>2025-12-01 12:21:52 +0100
committerDoris Verria <doris.verria@qt.io>2025-12-01 21:21:44 +0100
commit099ba116aae7dd257a4a007482ec0f172d97ce10 (patch)
treef07fdc81211948b05a3d3e075a984424a881bef1 /src/labs/stylekit/qqstylekitreader.cpp
parentcaeaa6bdd10d1d5b2bcd3b59f629583905197267 (diff)
Add font override properties to "text" propertyHEADdev
This allows to override certain font properties per control/state. So then the final font propagation logic becomes: Fallback Style -> Style -> Theme -> Control -> State Change-Id: Ifb451b156b0e4de7734ac7b31a002cd3fcb78dd0 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Diffstat (limited to 'src/labs/stylekit/qqstylekitreader.cpp')
-rw-r--r--src/labs/stylekit/qqstylekitreader.cpp23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/labs/stylekit/qqstylekitreader.cpp b/src/labs/stylekit/qqstylekitreader.cpp
index 71ea689377..690e9f96dd 100644
--- a/src/labs/stylekit/qqstylekitreader.cpp
+++ b/src/labs/stylekit/qqstylekitreader.cpp
@@ -18,6 +18,22 @@ using namespace Qt::StringLiterals;
static const QString kAlternate1 = "A1"_L1;
static const QString kAlternate2 = "A2"_L1;
+static QFont resolvedFontWithOverrides(const QQStyleKitReader *reader, const QFont &baseFont)
+{
+ Q_ASSERT(reader);
+ QFont font = baseFont;
+ const QQStyleKitTextProperties *textProps = reader->global()->text();
+ if (!textProps)
+ return font;
+ if (textProps->isDefined(QQSK::Property::Bold))
+ font.setBold(textProps->styleProperty<bool>(QQSK::Property::Bold));
+ if (textProps->isDefined(QQSK::Property::Italic))
+ font.setItalic(textProps->styleProperty<bool>(QQSK::Property::Italic));
+ if (textProps->isDefined(QQSK::Property::PointSize))
+ font.setPointSizeF(textProps->styleProperty<qreal>(QQSK::Property::PointSize));
+ return font;
+}
+
QList<QQStyleKitReader *> QQStyleKitReader::s_allReaders;
QMap<QString, QQmlComponent *> QQStyleKitReader::s_propertyChangesComponents;
@@ -81,6 +97,9 @@ QQmlComponent *QQStyleKitReader::createControlChangesComponent() const
bottomPadding: global.bottomPadding
text.color: global.text.color
text.alignment: global.text.alignment
+ text.bold: global.text.bold
+ text.italic: global.text.italic
+ text.pointSize: global.text.pointSize
}
)");
@@ -244,7 +263,7 @@ void QQStyleKitReader::updateControl()
Q_UNREACHABLE();
}
- setFont(style->fontForReader(this));
+ setFont(resolvedFontWithOverrides(this, style->fontForReader(this)));
}
void QQStyleKitReader::resetAll()
@@ -263,7 +282,7 @@ void QQStyleKitReader::updateFontFromTheme()
if (!style || !style->loaded())
return;
- setFont(style->fontForReader(this));
+ setFont(resolvedFontWithOverrides(this, style->fontForReader(this)));
}
void QQStyleKitReader::populateLocalStorage()