From c8dd650616278fda0f79bd237833de1ade5d947a Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Thu, 7 Nov 2019 14:07:53 +0100 Subject: Unset the resolved font's families if it was not set before When the font is resolved, if the font does not have families set then it will set it to be the family to ensure that it has the right precedence. Therefore we need to reset the families setting so that it does not act like a font has changed after being resolved when it really hasn't. Fixes: QTBUG-79790 Change-Id: I03c6f1456dbe5f136181b1c3a0e22fdc0fa66679 Reviewed-by: Mitch Curtis --- src/quicktemplates2/qquickapplicationwindow.cpp | 3 +++ src/quicktemplates2/qquickcontrol.cpp | 8 +++++++- src/quicktemplates2/qquicklabel.cpp | 5 ++++- src/quicktemplates2/qquicktextarea.cpp | 5 ++++- src/quicktemplates2/qquicktextfield.cpp | 5 ++++- 5 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/quicktemplates2/qquickapplicationwindow.cpp b/src/quicktemplates2/qquickapplicationwindow.cpp index 0d05bee7..19f6f82b 100644 --- a/src/quicktemplates2/qquickapplicationwindow.cpp +++ b/src/quicktemplates2/qquickapplicationwindow.cpp @@ -684,6 +684,9 @@ void QQuickApplicationWindow::setFont(const QFont &font) return; QFont resolvedFont = font.resolve(QQuickTheme::font(QQuickTheme::System)); + // See comment in QQuickControlPrivate::inheritFont + if (font.families().isEmpty()) + resolvedFont.setFamilies(QStringList()); d->setFont_helper(resolvedFont); } diff --git a/src/quicktemplates2/qquickcontrol.cpp b/src/quicktemplates2/qquickcontrol.cpp index e156fb57..0ebaf9a3 100644 --- a/src/quicktemplates2/qquickcontrol.cpp +++ b/src/quicktemplates2/qquickcontrol.cpp @@ -549,7 +549,13 @@ void QQuickControlPrivate::inheritFont(const QFont &font) parentFont.resolve(extra.isAllocated() ? extra->requestedFont.resolve() | font.resolve() : font.resolve()); const QFont defaultFont = q->defaultFont(); - const QFont resolvedFont = parentFont.resolve(defaultFont); + QFont resolvedFont = parentFont.resolve(defaultFont); + // Since resolving the font will put the family() into the + // families() list if it is empty then we need to unset it + // so it does not act as if the font has changed (when it + // has not actually changed) + if (defaultFont.families().isEmpty()) + resolvedFont.setFamilies(QStringList()); setFont_helper(resolvedFont); } diff --git a/src/quicktemplates2/qquicklabel.cpp b/src/quicktemplates2/qquicklabel.cpp index 124483fb..f3e0d512 100644 --- a/src/quicktemplates2/qquicklabel.cpp +++ b/src/quicktemplates2/qquicklabel.cpp @@ -183,7 +183,10 @@ void QQuickLabelPrivate::inheritFont(const QFont &font) parentFont.resolve(extra.isAllocated() ? extra->requestedFont.resolve() | font.resolve() : font.resolve()); const QFont defaultFont = QQuickTheme::font(QQuickTheme::Label); - const QFont resolvedFont = parentFont.resolve(defaultFont); + QFont resolvedFont = parentFont.resolve(defaultFont); + // See comment in QQuickControlPrivate::inheritFont + if (defaultFont.families().isEmpty()) + resolvedFont.setFamilies(QStringList()); setFont_helper(resolvedFont); } diff --git a/src/quicktemplates2/qquicktextarea.cpp b/src/quicktemplates2/qquicktextarea.cpp index f7b8969c..ef59bd93 100644 --- a/src/quicktemplates2/qquicktextarea.cpp +++ b/src/quicktemplates2/qquicktextarea.cpp @@ -253,7 +253,10 @@ void QQuickTextAreaPrivate::inheritFont(const QFont &font) parentFont.resolve(extra.isAllocated() ? extra->requestedFont.resolve() | font.resolve() : font.resolve()); const QFont defaultFont = QQuickTheme::font(QQuickTheme::TextArea); - const QFont resolvedFont = parentFont.resolve(defaultFont); + QFont resolvedFont = parentFont.resolve(defaultFont); + // See comment in QQuickControlPrivate::inheritFont + if (defaultFont.families().isEmpty()) + resolvedFont.setFamilies(QStringList()); setFont_helper(resolvedFont); } diff --git a/src/quicktemplates2/qquicktextfield.cpp b/src/quicktemplates2/qquicktextfield.cpp index 56ffc52f..740edff0 100644 --- a/src/quicktemplates2/qquicktextfield.cpp +++ b/src/quicktemplates2/qquicktextfield.cpp @@ -223,7 +223,10 @@ void QQuickTextFieldPrivate::inheritFont(const QFont &font) parentFont.resolve(extra.isAllocated() ? extra->requestedFont.resolve() | font.resolve() : font.resolve()); const QFont defaultFont = QQuickTheme::font(QQuickTheme::TextField); - const QFont resolvedFont = parentFont.resolve(defaultFont); + QFont resolvedFont = parentFont.resolve(defaultFont); + // See comment in QQuickControlPrivate::inheritFont + if (defaultFont.families().isEmpty()) + resolvedFont.setFamilies(QStringList()); setFont_helper(resolvedFont); } -- cgit v1.2.3