Skip to content

Commit 22d6e87

Browse files
sync: from linuxdeepin/qt5integration
Synchronize source files from linuxdeepin/qt5integration. Source-pull-request: linuxdeepin/qt5integration#251
1 parent 2057f19 commit 22d6e87

File tree

1 file changed

+20
-15
lines changed

1 file changed

+20
-15
lines changed

platformthemeplugin/qdeepintheme.cpp

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -656,6 +656,14 @@ const QPalette *QDeepinTheme::palette(QPlatformTheme::Palette type) const
656656
return &palette;
657657
}
658658

659+
static QFont *createUnresolveFont(const QString &family, qreal pointSize)
660+
{
661+
auto font = new QFont(family);
662+
font->setPointSizeF(pointSize);
663+
setResolveMask(*font, QFont::NoPropertiesResolved);
664+
return font;
665+
}
666+
659667
const QFont *QDeepinTheme::font(QPlatformTheme::Font type) const
660668
{
661669
if (!qApp->desktopSettingsAware())
@@ -667,12 +675,16 @@ const QFont *QDeepinTheme::font(QPlatformTheme::Font type) const
667675
QByteArray font_name = theme->fontName();
668676
qreal font_size = 0;
669677

678+
static QScopedPointer<QFont> sysFont;
670679
if (font_name.isEmpty()) {
671680
font_name = theme->gtkFontName();
672681
int font_size_index = font_name.lastIndexOf(' ');
673682

674-
if (font_size_index <= 0)
675-
break;
683+
if (font_size_index <= 0) {
684+
const QFont *defaultFont = QGenericUnixTheme::font(type);
685+
sysFont.reset(createUnresolveFont(defaultFont->family(), defaultFont->pointSizeF()));
686+
return sysFont.data();
687+
}
676688

677689
font_size = font_name.mid(font_size_index + 1).toDouble();
678690
font_name = font_name.left(font_size_index);
@@ -684,13 +696,8 @@ const QFont *QDeepinTheme::font(QPlatformTheme::Font type) const
684696
font_size = 10.5;
685697
}
686698

687-
static QScopedPointer<QFont> sysFont;
688-
689699
// We need to re-contruct a new QFont each time, inorder to refresh font dpi
690-
sysFont.reset(new QFont(QString()));
691-
sysFont->setFamily(font_name);
692-
sysFont->setPointSizeF(font_size);
693-
setResolveMask(*sysFont, QFont::NoPropertiesResolved);
700+
sysFont.reset(createUnresolveFont(font_name, font_size));
694701

695702
return sysFont.data();
696703
}
@@ -700,8 +707,11 @@ const QFont *QDeepinTheme::font(QPlatformTheme::Font type) const
700707
if (DPlatformTheme *theme = appTheme()) {
701708
QByteArray font_name = theme->monoFontName();
702709

710+
static QScopedPointer<QFont> fixedFont;
703711
if (font_name.isEmpty()) {
704-
break;
712+
const QFont *defaultFont = QGenericUnixTheme::font(type);
713+
fixedFont.reset(createUnresolveFont(defaultFont->family(), defaultFont->pointSizeF()));
714+
return fixedFont.data();
705715
}
706716

707717
qreal font_size = theme->fontPointSize();
@@ -710,13 +720,8 @@ const QFont *QDeepinTheme::font(QPlatformTheme::Font type) const
710720
font_size = 10.5;
711721
}
712722

713-
static QScopedPointer<QFont> fixedFont;
714-
715723
// We need to re-contruct a new QFont each time, inorder to refresh font dpi
716-
fixedFont.reset(new QFont(QString()));
717-
fixedFont->setFamily(font_name);
718-
fixedFont->setPointSizeF(font_size);
719-
setResolveMask(*fixedFont, QFont::NoPropertiesResolved);
724+
fixedFont.reset(createUnresolveFont(font_name, font_size));
720725

721726
return fixedFont.data();
722727
}

0 commit comments

Comments
 (0)