diff options
author | Andy Shaw <andy.shaw@qt.io> | 2019-11-07 14:07:53 +0100 |
---|---|---|
committer | Andy Shaw <andy.shaw@qt.io> | 2019-11-08 12:38:38 +0100 |
commit | c8dd650616278fda0f79bd237833de1ade5d947a (patch) | |
tree | 0eea4c77c95d8733abb2f7b57220476018bdcc50 | |
parent | 6f8ed8a6130f5583ec24220ddf440877dc45afa0 (diff) |
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 <mitch.curtis@qt.io>
-rw-r--r-- | src/quicktemplates2/qquickapplicationwindow.cpp | 3 | ||||
-rw-r--r-- | src/quicktemplates2/qquickcontrol.cpp | 8 | ||||
-rw-r--r-- | src/quicktemplates2/qquicklabel.cpp | 5 | ||||
-rw-r--r-- | src/quicktemplates2/qquicktextarea.cpp | 5 | ||||
-rw-r--r-- | 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); } |