@@ -656,6 +656,14 @@ const QPalette *QDeepinTheme::palette(QPlatformTheme::Palette type) const
656
656
return &palette;
657
657
}
658
658
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
+
659
667
const QFont *QDeepinTheme::font (QPlatformTheme::Font type) const
660
668
{
661
669
if (!qApp->desktopSettingsAware ())
@@ -667,12 +675,16 @@ const QFont *QDeepinTheme::font(QPlatformTheme::Font type) const
667
675
QByteArray font_name = theme->fontName ();
668
676
qreal font_size = 0 ;
669
677
678
+ static QScopedPointer<QFont> sysFont;
670
679
if (font_name.isEmpty ()) {
671
680
font_name = theme->gtkFontName ();
672
681
int font_size_index = font_name.lastIndexOf (' ' );
673
682
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
+ }
676
688
677
689
font_size = font_name.mid (font_size_index + 1 ).toDouble ();
678
690
font_name = font_name.left (font_size_index);
@@ -684,13 +696,8 @@ const QFont *QDeepinTheme::font(QPlatformTheme::Font type) const
684
696
font_size = 10.5 ;
685
697
}
686
698
687
- static QScopedPointer<QFont> sysFont;
688
-
689
699
// 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));
694
701
695
702
return sysFont.data ();
696
703
}
@@ -700,8 +707,11 @@ const QFont *QDeepinTheme::font(QPlatformTheme::Font type) const
700
707
if (DPlatformTheme *theme = appTheme ()) {
701
708
QByteArray font_name = theme->monoFontName ();
702
709
710
+ static QScopedPointer<QFont> fixedFont;
703
711
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 ();
705
715
}
706
716
707
717
qreal font_size = theme->fontPointSize ();
@@ -710,13 +720,8 @@ const QFont *QDeepinTheme::font(QPlatformTheme::Font type) const
710
720
font_size = 10.5 ;
711
721
}
712
722
713
- static QScopedPointer<QFont> fixedFont;
714
-
715
723
// 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));
720
725
721
726
return fixedFont.data ();
722
727
}
0 commit comments