diff --git a/ardour.rc.in b/ardour.rc.in
index 04058791c9..6b6c29908c 100644
--- a/ardour.rc.in
+++ b/ardour.rc.in
@@ -40,6 +40,7 @@
+
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index 31e42b49e1..0c6352c738 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -244,6 +244,8 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[])
keyboard = new Keyboard;
+ gtk_settings_set_long_property (gtk_settings_get_default(), "gtk-xft-dpi", Config->get_font_scale(), "ardour");
+
starting.connect (mem_fun(*this, &ARDOUR_UI::startup));
stopping.connect (mem_fun(*this, &ARDOUR_UI::shutdown));
diff --git a/gtk2_ardour/option_editor.cc b/gtk2_ardour/option_editor.cc
index 2643777269..24ecdc8448 100644
--- a/gtk2_ardour/option_editor.cc
+++ b/gtk2_ardour/option_editor.cc
@@ -250,20 +250,25 @@ OptionEditor::add_session_paths ()
session_raid_entry.set_text(session->raid_path());
}
+static void
+font_scale_changed ()
+{
+ gtk_settings_set_long_property (gtk_settings_get_default(),
+ "gtk-xft-dpi", Config->get_font_scale(), "ardour");
+}
+
static void
reset_dpi (Gtk::Adjustment* adj)
{
- float val = adj->get_value();
- long dpi = (long) floor (val * 1024);
- gtk_settings_set_long_property (gtk_settings_get_default(),
- "gtk-xft-dpi", dpi, "ardour");
+ Config->set_font_scale((long)floor (adj->get_value() * 1024));
+ font_scale_changed();
}
void
OptionEditor::setup_misc_options ()
{
Gtk::HBox* hbox;
- Gtk::Adjustment* dpi_adj = new Gtk::Adjustment (75, 50, 250, 1, 10);
+ Gtk::Adjustment* dpi_adj = new Gtk::Adjustment ((double)Config->get_font_scale() / 1024, 50, 250, 1, 10);
Gtk::HScale * dpi_range = new Gtk::HScale (*dpi_adj);
Label* label = manage (new Label (_("Font Scaling")));
@@ -1368,5 +1373,7 @@ OptionEditor::parameter_changed (const char* parameter_name)
save_history_button.set_active (x);
saved_history_depth_spinner.set_sensitive (x);
+ } else if (PARAM_IS ("font-scale")) {
+ font_scale_changed();
}
}
diff --git a/libs/ardour/ardour/configuration_vars.h b/libs/ardour/ardour/configuration_vars.h
index 0ca7036270..3a6c8399b0 100644
--- a/libs/ardour/ardour/configuration_vars.h
+++ b/libs/ardour/ardour/configuration_vars.h
@@ -157,6 +157,7 @@ CONFIG_VARIABLE (std::string, keyboard_layout, "keyboard-layout", "ansi")
CONFIG_VARIABLE (std::string, default_bindings, "default-bindings", "ardour")
CONFIG_VARIABLE (bool, default_narrow_ms, "default-narrow_ms", false)
CONFIG_VARIABLE (bool, rubberbanding_snaps_to_grid, "rubberbanding-snaps-to-grid", false)
+CONFIG_VARIABLE (long, font_scale, "font-scale", 102400)
/* denormal management */