[PATCH] Fix system default font handling

Anton Lundin glance at acc.umu.se
Fri Mar 21 10:56:10 PDT 2014


We didn't care about system default fonts and sizes, we just used the Qt
default font.

Due to how QFont is constructed, there was need to split font and font
size.

Signed-off-by: Anton Lundin <glance at acc.umu.se>
---
 linux.c              | 3 ++-
 macos.c              | 3 ++-
 pref.h               | 1 +
 qt-ui/mainwindow.cpp | 5 +++--
 subsurfacestartup.c  | 1 +
 windows.c            | 3 ++-
 6 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/linux.c b/linux.c
index 346af09..6bfb381 100644
--- a/linux.c
+++ b/linux.c
@@ -9,7 +9,8 @@
 #include <stdio.h>
 #include <fcntl.h>
 
-const char system_divelist_default_font[] = "Sans 8";
+const char system_divelist_default_font[] = "Sans";
+const int system_divelist_default_font_size = 8;
 
 const char *system_default_filename(void)
 {
diff --git a/macos.c b/macos.c
index 58619d7..01c3fbf 100644
--- a/macos.c
+++ b/macos.c
@@ -25,7 +25,8 @@
 #define ICON_NAME "Subsurface.icns"
 #define UI_FONT "Arial 12"
 
-const char system_divelist_default_font[] = "Arial 10";
+const char system_divelist_default_font[] = "Arial";
+const int system_divelist_default_font_size = 10;
 
 const char *system_default_filename(void)
 {
diff --git a/pref.h b/pref.h
index a5d90a9..3955b88 100644
--- a/pref.h
+++ b/pref.h
@@ -64,6 +64,7 @@ extern void subsurface_flush_conf(void);
 extern void subsurface_close_conf(void);
 
 extern const char system_divelist_default_font[];
+extern const int system_divelist_default_font_size;
 extern const char *system_default_filename();
 
 extern void load_preferences(void);
diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp
index 8fd51a5..e77fa6b 100644
--- a/qt-ui/mainwindow.cpp
+++ b/qt-ui/mainwindow.cpp
@@ -645,8 +645,9 @@ void MainWindow::readSettings()
 {
 	QSettings s;
 	s.beginGroup("Display");
-	QFont defaultFont = s.value("divelist_font", qApp->font()).value<QFont>();
-	defaultFont.setPointSizeF(s.value("font_size", qApp->font().pointSizeF()).toFloat());
+	QFont defaultFont = QFont(default_prefs.divelist_font);
+	defaultFont = s.value("divelist_font", defaultFont).value<QFont>();
+	defaultFont.setPointSizeF(s.value("font_size", default_prefs.font_size).toFloat());
 	qApp->setFont(defaultFont);
 	s.endGroup();
 
diff --git a/subsurfacestartup.c b/subsurfacestartup.c
index 3f410af..6d3714b 100644
--- a/subsurfacestartup.c
+++ b/subsurfacestartup.c
@@ -170,6 +170,7 @@ void setup_system_prefs(void)
 	const char *env;
 
 	default_prefs.divelist_font = strdup(system_divelist_default_font);
+	default_prefs.font_size = system_divelist_default_font_size;
 	default_prefs.default_filename = system_default_filename();
 
 	env = getenv("LC_MEASUREMENT");
diff --git a/windows.c b/windows.c
index 7e3c507..c76a730 100644
--- a/windows.c
+++ b/windows.c
@@ -10,7 +10,8 @@
 #include <dirent.h>
 #include <zip.h>
 
-const char system_divelist_default_font[] = "Sans 8";
+const char system_divelist_default_font[] = "Sans";
+const int system_divelist_default_font_size = 8;
 
 const char *system_default_filename(void)
 {
-- 
1.8.3.2



More information about the subsurface mailing list