summaryrefslogtreecommitdiffstats
path: root/mobile-widgets/themeinterface.cpp
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2021-01-14 17:08:13 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2021-01-19 12:35:29 -0800
commit323e97c60370f06bb30e57580c8c4fce39df95f7 (patch)
tree577e0aa0d87e5c7012c57c7829587f5f9aeb8b31 /mobile-widgets/themeinterface.cpp
parent14721175416772d23c9757e74b78ec8be448aac7 (diff)
downloadsubsurface-323e97c60370f06bb30e57580c8c4fce39df95f7.tar.gz
mobile/UI: remember the system default font size
We need to do this before the preferences are loaded, or the system default size is lost. Given that our other sizes are all relative to this value, that would be a problem. With this we can now ensure that we always have the right font size for smaller, regular, and larger theme settings. Also removes some obsolete commented out code. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'mobile-widgets/themeinterface.cpp')
-rw-r--r--mobile-widgets/themeinterface.cpp45
1 files changed, 24 insertions, 21 deletions
diff --git a/mobile-widgets/themeinterface.cpp b/mobile-widgets/themeinterface.cpp
index 38a569746..8dcfc1903 100644
--- a/mobile-widgets/themeinterface.cpp
+++ b/mobile-widgets/themeinterface.cpp
@@ -56,13 +56,7 @@ ThemeInterface::ThemeInterface()
// get current theme
m_currentTheme = qPrefDisplay::theme();
update_theme();
-
- // check system font and create QFontInfo in order to reliably get the point size
- QFontInfo qfi(defaultModelFont());
- m_basePointSize = qfi.pointSize();
-
- // set initial font size
- set_currentScale(qPrefDisplay::mobile_scale());
+ m_basePointSize = -1.0; // simply a placeholder to declare 'this isn't set, yet'
}
void ThemeInterface::set_currentTheme(const QString &theme)
@@ -73,6 +67,12 @@ void ThemeInterface::set_currentTheme(const QString &theme)
emit currentThemeChanged();
}
+void ThemeInterface::setInitialFontSize(double fontSize)
+{
+ m_basePointSize = fontSize;
+ set_currentScale(qPrefDisplay::mobile_scale());
+}
+
double ThemeInterface::currentScale()
{
return qPrefDisplay::mobile_scale();
@@ -80,27 +80,30 @@ double ThemeInterface::currentScale()
void ThemeInterface::set_currentScale(double newScale)
{
+ static bool needSignals = true; // make sure the signals fire the first time
+
if (!IS_FP_SAME(newScale, qPrefDisplay::mobile_scale())) {
- double factor = newScale / qPrefDisplay::mobile_scale();
qPrefDisplay::set_mobile_scale(newScale);
emit currentScaleChanged();
-
- // Set current font size
- m_basePointSize *= factor;
- defaultModelFont().setPointSizeF(m_basePointSize);
+ needSignals = true;
}
- // adjust all used font sizes
- m_regularPointSize = m_basePointSize;
- emit regularPointSizeChanged();
+ if (needSignals) {
+ // adjust all used font sizes
+ m_regularPointSize = m_basePointSize * newScale;
+ defaultModelFont().setPointSizeF(m_regularPointSize);
+ emit regularPointSizeChanged();
- m_headingPointSize = m_regularPointSize * 1.2;
- emit headingPointSizeChanged();
+ m_headingPointSize = m_regularPointSize * 1.2;
+ emit headingPointSizeChanged();
- m_smallPointSize = m_regularPointSize * 0.8;
- emit smallPointSizeChanged();
+ m_smallPointSize = m_regularPointSize * 0.8;
+ emit smallPointSizeChanged();
- m_titlePointSize = m_regularPointSize * 1.5;
- emit titlePointSizeChanged();
+ m_titlePointSize = m_regularPointSize * 1.5;
+ emit titlePointSizeChanged();
+
+ needSignals = false;
+ }
}
void ThemeInterface::update_theme()