summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/abaddon.cpp7
-rw-r--r--src/settings.cpp11
-rw-r--r--src/settings.hpp1
3 files changed, 19 insertions, 0 deletions
diff --git a/src/abaddon.cpp b/src/abaddon.cpp
index a8360c2..6557182 100644
--- a/src/abaddon.cpp
+++ b/src/abaddon.cpp
@@ -263,6 +263,13 @@ int Abaddon::StartGTK() {
}
#endif
+ if (m_settings.GetSettings().FontScale > 0.0) {
+ auto dpi = Gdk::Screen::get_default()->get_resolution();
+ if (dpi < 0.0) dpi = 96.0;
+ auto newdpi = dpi * 1024.0 * m_settings.GetSettings().FontScale;
+ Gtk::Settings::get_default()->set_property("gtk-xft-dpi", newdpi);
+ }
+
// store must be checked before this can be called
m_main_window->UpdateComponents();
diff --git a/src/settings.cpp b/src/settings.cpp
index 601205a..f910ff7 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -42,6 +42,10 @@ void SettingsManager::ReadSettings() {
try { \
m_settings.var = m_file.get_integer(section, key); \
} catch (...) {}
+#define SMFLT(section, key, var) \
+ try { \
+ m_settings.var = m_file.get_double(section, key); \
+ } catch (...) {}
SMSTR("discord", "api_base", APIBaseURL);
SMSTR("discord", "gateway", GatewayURL);
@@ -59,6 +63,7 @@ void SettingsManager::ReadSettings() {
SMBOOL("gui", "unreads", Unreads);
SMBOOL("gui", "alt_menu", AltMenu);
SMBOOL("gui", "hide_to_tray", HideToTray);
+ SMFLT("gui", "font_scale", FontScale);
SMINT("http", "concurrent", CacheHTTPConcurrency);
SMSTR("http", "user_agent", UserAgent);
SMSTR("style", "expandercolor", ChannelsExpanderColor);
@@ -102,6 +107,7 @@ void SettingsManager::ReadSettings() {
#undef SMBOOL
#undef SMSTR
#undef SMINT
+#undef SMFLT
m_read_settings = m_settings;
}
@@ -127,6 +133,9 @@ void SettingsManager::Close() {
#define SMINT(section, key, var) \
if (m_settings.var != m_read_settings.var) \
m_file.set_integer(section, key, m_settings.var);
+#define SMFLT(section, key, var) \
+ if (m_settings.var != m_read_settings.var) \
+ m_file.set_double(section, key, m_settings.var);
SMSTR("discord", "api_base", APIBaseURL);
SMSTR("discord", "gateway", GatewayURL);
@@ -144,6 +153,7 @@ void SettingsManager::Close() {
SMBOOL("gui", "unreads", Unreads);
SMBOOL("gui", "alt_menu", AltMenu);
SMBOOL("gui", "hide_to_tray", HideToTray);
+ SMFLT("gui", "font_scale", FontScale);
SMINT("http", "concurrent", CacheHTTPConcurrency);
SMSTR("http", "user_agent", UserAgent);
SMSTR("style", "expandercolor", ChannelsExpanderColor);
@@ -172,6 +182,7 @@ void SettingsManager::Close() {
#undef SMSTR
#undef SMBOOL
#undef SMINT
+#undef SMFLT
try {
if (!m_file.save_to_file(m_filename))
diff --git a/src/settings.hpp b/src/settings.hpp
index 0d2e68b..7c6368f 100644
--- a/src/settings.hpp
+++ b/src/settings.hpp
@@ -30,6 +30,7 @@ public:
bool Unreads { true };
bool AltMenu { false };
bool HideToTray { false };
+ double FontScale { -1.0 };
// [http]
int CacheHTTPConcurrency { 20 };