GTK2 theme should use GTK configured font variant
This patch makes the GTK2 theme read the font configuration and use that as the default system font. Task-number: QTBUG-39643 Change-Id: Ieacf8968e54f34c6d44669350d349c9a96ed6cc5 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>bb10
parent
3e0a6c1b36
commit
2a33bfcfd1
|
|
@ -519,15 +519,23 @@ const char *QGnomeTheme::name = "gnome";
|
|||
class QGnomeThemePrivate : public QPlatformThemePrivate
|
||||
{
|
||||
public:
|
||||
QGnomeThemePrivate()
|
||||
: systemFont(QLatin1Literal(defaultSystemFontNameC), defaultSystemFontSize)
|
||||
, fixedFont(QStringLiteral("monospace"), systemFont.pointSize())
|
||||
QGnomeThemePrivate() : fontsConfigured(false) { }
|
||||
void configureFonts(QString gtkFontName) const
|
||||
{
|
||||
Q_ASSERT(!fontsConfigured);
|
||||
const int split = gtkFontName.lastIndexOf(QChar::Space);
|
||||
float size = gtkFontName.mid(split+1).toFloat();
|
||||
QString fontName = gtkFontName.left(split);
|
||||
|
||||
systemFont = QFont(fontName, size);
|
||||
fixedFont = QFont(QLatin1String("monospace"), systemFont.pointSize());
|
||||
fixedFont.setStyleHint(QFont::TypeWriter);
|
||||
fontsConfigured = true;
|
||||
}
|
||||
|
||||
const QFont systemFont;
|
||||
QFont fixedFont;
|
||||
mutable QFont systemFont;
|
||||
mutable QFont fixedFont;
|
||||
mutable bool fontsConfigured;
|
||||
};
|
||||
|
||||
QGnomeTheme::QGnomeTheme()
|
||||
|
|
@ -565,9 +573,11 @@ QVariant QGnomeTheme::themeHint(QPlatformTheme::ThemeHint hint) const
|
|||
const QFont *QGnomeTheme::font(Font type) const
|
||||
{
|
||||
Q_D(const QGnomeTheme);
|
||||
if (!d->fontsConfigured)
|
||||
d->configureFonts(gtkFontName());
|
||||
switch (type) {
|
||||
case QPlatformTheme::SystemFont:
|
||||
return &d->systemFont;
|
||||
return &d->systemFont;
|
||||
case QPlatformTheme::FixedFont:
|
||||
return &d->fixedFont;
|
||||
default:
|
||||
|
|
@ -575,6 +585,11 @@ const QFont *QGnomeTheme::font(Font type) const
|
|||
}
|
||||
}
|
||||
|
||||
QString QGnomeTheme::gtkFontName() const
|
||||
{
|
||||
return QStringLiteral("%1 %2").arg(QLatin1String(defaultSystemFontNameC)).arg(defaultSystemFontSize);
|
||||
}
|
||||
|
||||
QString QGnomeTheme::standardButtonText(int button) const
|
||||
{
|
||||
switch (button) {
|
||||
|
|
|
|||
|
|
@ -111,6 +111,8 @@ public:
|
|||
virtual const QFont *font(Font type) const;
|
||||
QString standardButtonText(int button) const Q_DECL_OVERRIDE;
|
||||
|
||||
virtual QString gtkFontName() const;
|
||||
|
||||
static const char *name;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -85,6 +85,14 @@ QVariant QGtk2Theme::themeHint(QPlatformTheme::ThemeHint hint) const
|
|||
}
|
||||
}
|
||||
|
||||
QString QGtk2Theme::gtkFontName() const
|
||||
{
|
||||
QString cfgFontName = gtkSetting("gtk-font-name");
|
||||
if (!cfgFontName.isEmpty())
|
||||
return cfgFontName;
|
||||
return QGnomeTheme::gtkFontName();
|
||||
}
|
||||
|
||||
bool QGtk2Theme::usePlatformNativeDialog(DialogType type) const
|
||||
{
|
||||
switch (type) {
|
||||
|
|
|
|||
|
|
@ -51,7 +51,8 @@ class QGtk2Theme : public QGnomeTheme
|
|||
public:
|
||||
QGtk2Theme();
|
||||
|
||||
QVariant themeHint(ThemeHint hint) const;
|
||||
virtual QVariant themeHint(ThemeHint hint) const Q_DECL_OVERRIDE;
|
||||
virtual QString gtkFontName() const Q_DECL_OVERRIDE;
|
||||
|
||||
bool usePlatformNativeDialog(DialogType type) const;
|
||||
QPlatformDialogHelper *createPlatformDialogHelper(DialogType type) const;
|
||||
|
|
|
|||
Loading…
Reference in New Issue