diff options
| author | Doris Verria <doris.verria@qt.io> | 2025-12-01 12:21:52 +0100 |
|---|---|---|
| committer | Doris Verria <doris.verria@qt.io> | 2025-12-01 21:21:44 +0100 |
| commit | 099ba116aae7dd257a4a007482ec0f172d97ce10 (patch) | |
| tree | f07fdc81211948b05a3d3e075a984424a881bef1 /src/labs/stylekit/qqstylekitreader.cpp | |
| parent | caeaa6bdd10d1d5b2bcd3b59f629583905197267 (diff) | |
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.cpp | 23 |
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() |
