diff --git a/src/controls/Theme.qml b/src/controls/Theme.qml --- a/src/controls/Theme.qml +++ b/src/controls/Theme.qml @@ -89,6 +89,15 @@ property color complementaryFocusColor: "#2196F3" property font defaultFont: fontMetrics.font + property font smallFont: { + let font = fontMetrics.font + if (!!font.pixelSize) { + font.pixelSize =- 2 + } else { + font.pointSize =- 2 + } + return font + } property list children: [ TextMetrics { diff --git a/src/libkirigami/basictheme.cpp b/src/libkirigami/basictheme.cpp --- a/src/libkirigami/basictheme.cpp +++ b/src/libkirigami/basictheme.cpp @@ -69,7 +69,16 @@ : PlatformTheme(parent) { //TODO: correct? - connect(qApp, &QGuiApplication::fontDatabaseChanged, this, [this]() {setDefaultFont(qApp->font());}); + connect(qApp, &QGuiApplication::fontDatabaseChanged, this, [this] () { + setDefaultFont(qApp->font()); + auto smallFont = qApp->font(); + if (smallFont.pixelSize() != -1) { + smallFont.setPixelSize(smallFont.pixelSize()-2); + } else { + smallFont.setPointSize(smallFont.pointSize()-2); + } + setSmallFont(smallFont); + }); //connect all the declarative object signals to the timer start to compress, use the old syntax as they are all signals defined in QML connect(basicThemeDeclarative()->instance(this), SIGNAL(textColorChanged()), diff --git a/src/libkirigami/platformtheme.h b/src/libkirigami/platformtheme.h --- a/src/libkirigami/platformtheme.h +++ b/src/libkirigami/platformtheme.h @@ -168,6 +168,10 @@ // font and palette Q_PROPERTY(QFont defaultFont READ defaultFont NOTIFY defaultFontChanged) + + // small font + Q_PROPERTY(QFont smallFont READ smallFont NOTIFY defaultFontChanged) + //Active palette Q_PROPERTY(QPalette palette READ palette NOTIFY paletteChanged) @@ -230,6 +234,7 @@ QColor hoverColor() const; QFont defaultFont() const; + QFont smallFont() const; //this may is used by the desktop QQC2 to set the styleoption palettes QPalette palette() const; @@ -270,6 +275,7 @@ //TODO: parameters to signals as this is also a c++ api void colorsChanged(); void defaultFontChanged(const QFont &font); + void smallFontChanged(const QFont &font); void colorSetChanged(Kirigami::PlatformTheme::ColorSet colorSet); void colorGroupChanged(Kirigami::PlatformTheme::ColorGroup colorGroup); void paletteChanged(const QPalette &pal); @@ -306,6 +312,7 @@ void setHoverColor(const QColor &color); void setDefaultFont(const QFont &defaultFont); + void setSmallFont(const QFont &smallFont); void setPalette(const QPalette &palette); private: PlatformThemePrivate *d; diff --git a/src/libkirigami/platformtheme.cpp b/src/libkirigami/platformtheme.cpp --- a/src/libkirigami/platformtheme.cpp +++ b/src/libkirigami/platformtheme.cpp @@ -89,6 +89,8 @@ QPalette customPalette; QFont font; + QFont smallFont; + bool m_inherit = true; bool m_init = true; bool m_supportsIconColoring = false; @@ -614,6 +616,18 @@ emit defaultFontChanged(font); } +QFont PlatformTheme::smallFont() const +{ + return d->smallFont; +} + +void PlatformTheme::setSmallFont(const QFont &font) +{ + if (d->smallFont != font) { + d->smallFont = font; + emit smallFontChanged(font); + } +} #define PROPAGATECUSTOMCOLOR(colorName, color)\ for (PlatformTheme *t : qAsConst(d->m_childThemes)) {\