summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug McLain <doug@nostar.net>2008-02-24 19:13:09 +0000
committerDoug McLain <doug@nostar.net>2008-02-24 19:13:09 +0000
commit2f18e339cdffadbc5a37db39207dc1f7be7cb8ac (patch)
tree6d60e33620b1d87198ac6919a8ca4d1262b9d2a4
parent6299560116cb1e024f214f4928aa88605a5cddff (diff)
Fixes for canvas and gain meter text not being scaled on startup
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3119 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/ardour_ui.cc3
-rw-r--r--gtk2_ardour/ardour_ui.h1
-rw-r--r--gtk2_ardour/ardour_ui2.cc1
-rw-r--r--gtk2_ardour/gain_meter.cc8
-rw-r--r--gtk2_ardour/gain_meter.h3
-rw-r--r--gtk2_ardour/marker.cc2
-rw-r--r--gtk2_ardour/option_editor.cc20
-rw-r--r--gtk2_ardour/region_gain_line.cc2
-rw-r--r--gtk2_ardour/region_view.cc2
-rw-r--r--gtk2_ardour/utils.cc29
-rw-r--r--gtk2_ardour/utils.h2
11 files changed, 45 insertions, 28 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index 0c6352c738..d74e7d4210 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -244,7 +244,7 @@ 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");
+ reset_dpi();
starting.connect (mem_fun(*this, &ARDOUR_UI::startup));
stopping.connect (mem_fun(*this, &ARDOUR_UI::shutdown));
@@ -632,7 +632,6 @@ ARDOUR_UI::startup ()
}
BootMessage (_("Ardour is ready for use"));
-
show ();
}
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index 6b076e2712..1a6c8dbc4d 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -98,6 +98,7 @@ namespace ALSA {
#define FRAME_NAME "BaseFrame"
extern sigc::signal<void> ColorsChanged;
+extern sigc::signal<void> DPIReset;
class ARDOUR_UI : public Gtkmm2ext::UI
{
diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc
index 426571bcec..8a29e64c6d 100644
--- a/gtk2_ardour/ardour_ui2.cc
+++ b/gtk2_ardour/ardour_ui2.cc
@@ -880,6 +880,7 @@ ARDOUR_UI::editor_realized ()
set_size_request_to_display_given_text (speed_display_box, _("-0.55"), 2, 2);
const guint32 FUDGE = 25; // Combo's are stupid - they steal space from the entry for the button
set_size_request_to_display_given_text (shuttle_style_button, _("sprung"), 2+FUDGE, 10);
+ reset_dpi();
}
void
diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc
index 2180cde3d5..ac4da8507b 100644
--- a/gtk2_ardour/gain_meter.cc
+++ b/gtk2_ardour/gain_meter.cc
@@ -206,7 +206,8 @@ GainMeter::GainMeter (boost::shared_ptr<IO> io, Session& s)
ResetGroupPeakDisplays.connect (mem_fun(*this, &GainMeter::reset_group_peak_display));
UI::instance()->theme_changed.connect (mem_fun(*this, &GainMeter::on_theme_changed));
- ColorsChanged.connect (mem_fun (*this, &GainMeter::color_handler));
+ ColorsChanged.connect (bind(mem_fun (*this, &GainMeter::color_handler), false));
+ DPIReset.connect (bind(mem_fun (*this, &GainMeter::color_handler), true));
//hide_all();
}
@@ -288,7 +289,7 @@ GainMeter::meter_metrics_expose (GdkEventExpose *ev)
Glib::RefPtr<Gdk::Pixmap> pixmap;
std::map<string,Glib::RefPtr<Gdk::Pixmap> >::iterator i = metric_pixmaps.find (meter_metric_area.get_name());
- if (i == metric_pixmaps.end() || style_changed) {
+ if (i == metric_pixmaps.end() || style_changed || dpi_changed) {
pixmap = render_metrics (meter_metric_area);
} else {
pixmap = i->second;
@@ -965,8 +966,9 @@ void GainMeter::clear_meters ()
}
}
-void GainMeter::color_handler()
+void GainMeter::color_handler(bool dpi)
{
color_changed = true;
+ dpi_changed = (dpi) ? true : false;
setup_meters();
}
diff --git a/gtk2_ardour/gain_meter.h b/gtk2_ardour/gain_meter.h
index 00254b627a..ba6984088d 100644
--- a/gtk2_ardour/gain_meter.h
+++ b/gtk2_ardour/gain_meter.h
@@ -192,8 +192,9 @@ class GainMeter : public Gtk::VBox
void on_theme_changed ();
bool style_changed;
+ bool dpi_changed;
bool color_changed;
- void color_handler();
+ void color_handler(bool);
};
#endif /* __ardour_gtk_gain_meter_h__ */
diff --git a/gtk2_ardour/marker.cc b/gtk2_ardour/marker.cc
index e35a2d7735..edf05cf6ec 100644
--- a/gtk2_ardour/marker.cc
+++ b/gtk2_ardour/marker.cc
@@ -243,7 +243,7 @@ Marker::Marker (PublicEditor& ed, ArdourCanvas::Group& parent, guint32 rgba, con
mark->property_outline_color_rgba() = rgba;
mark->property_width_pixels() = 1;
Pango::FontDescription* font = get_font_for_style (N_("MarkerText"));
-
+
text = new Text (*group);
text->property_text() = annotation.c_str();
text->property_font_desc() = *font;
diff --git a/gtk2_ardour/option_editor.cc b/gtk2_ardour/option_editor.cc
index bf57797fe1..d796f2dd15 100644
--- a/gtk2_ardour/option_editor.cc
+++ b/gtk2_ardour/option_editor.cc
@@ -46,6 +46,7 @@
#include "option_editor.h"
#include "midi_port_dialog.h"
#include "gui_thread.h"
+#include "utils.h"
#include "i18n.h"
@@ -253,25 +254,6 @@ OptionEditor::add_session_paths ()
}
static void
-reset_dpi ()
-{
- long val = Config->get_font_scale();
-
- /* FT2 rendering */
-
- pango_ft2_font_map_set_resolution ((PangoFT2FontMap*) pango_ft2_font_map_for_display(), val/1024, val/1024);
-
- /* Cairo rendering, in case there is any */
-
- pango_cairo_font_map_set_resolution ((PangoCairoFontMap*) pango_cairo_font_map_get_default(), val/1024);
-
- /* Xft rendering */
-
- gtk_settings_set_long_property (gtk_settings_get_default(),
- "gtk-xft-dpi", val, "ardour");
-}
-
-static void
font_scale_changed (Gtk::Adjustment* adj)
{
Config->set_font_scale((long)floor (adj->get_value() * 1024));
diff --git a/gtk2_ardour/region_gain_line.cc b/gtk2_ardour/region_gain_line.cc
index 6f03c1b17b..087ad59d4f 100644
--- a/gtk2_ardour/region_gain_line.cc
+++ b/gtk2_ardour/region_gain_line.cc
@@ -59,7 +59,7 @@ AudioRegionGainLine::view_to_model_y (double& y)
void
AudioRegionGainLine::model_to_view_y (double& y)
{
- if (y < 0) y == 0;
+ if (y < 0) y = 0;
y = gain_to_slider_position (y);
}
diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc
index d038c4d610..9c2bff631a 100644
--- a/gtk2_ardour/region_view.cc
+++ b/gtk2_ardour/region_view.cc
@@ -143,7 +143,7 @@ RegionView::init (Gdk::Color& basic_color, bool wfd)
set_colors ();
ColorsChanged.connect (mem_fun (*this, &RegionView::color_handler));
-
+ set_pango_fontsize();
/* XXX sync mark drag? */
}
diff --git a/gtk2_ardour/utils.cc b/gtk2_ardour/utils.cc
index a1ca5c2eb0..68b5768ded 100644
--- a/gtk2_ardour/utils.cc
+++ b/gtk2_ardour/utils.cc
@@ -17,6 +17,9 @@
*/
+#include <pango/pangoft2.h> // for fontmap resolution control for GnomeCanvas
+#include <pango/pangocairo.h> // for fontmap resolution control for GnomeCanvas
+
#include <cstdlib>
#include <cctype>
#include <fstream>
@@ -31,6 +34,7 @@
#include <gtkmm2ext/utils.h>
#include <ardour/ardour.h>
+#include <ardour/configuration.h>
#include "ardour_ui.h"
#include "keyboard.h"
@@ -45,6 +49,8 @@ using namespace sigc;
using namespace Glib;
using namespace PBD;
+sigc::signal<void> DPIReset;
+
int
pixel_width (const ustring& str, Pango::FontDescription& font)
{
@@ -692,6 +698,29 @@ key_is_legal_for_numeric_entry (guint keyval)
return false;
}
+void
+set_pango_fontsize ()
+{
+ long val = ARDOUR::Config->get_font_scale();
+
+ /* FT2 rendering */
+
+ pango_ft2_font_map_set_resolution ((PangoFT2FontMap*) pango_ft2_font_map_for_display(), val/1024, val/1024);
+
+ /* Cairo rendering, in case there is any */
+
+ pango_cairo_font_map_set_resolution ((PangoCairoFontMap*) pango_cairo_font_map_get_default(), val/1024);
+}
+void
+reset_dpi ()
+{
+ long val = ARDOUR::Config->get_font_scale();
+ set_pango_fontsize ();
+ /* Xft rendering */
+ gtk_settings_set_long_property (gtk_settings_get_default(),
+ "gtk-xft-dpi", val, "ardour");
+ DPIReset();//Emit Signal
+}
diff --git a/gtk2_ardour/utils.h b/gtk2_ardour/utils.h
index 74a6eebd21..4cf8fc371b 100644
--- a/gtk2_ardour/utils.h
+++ b/gtk2_ardour/utils.h
@@ -83,5 +83,7 @@ static std::map<std::string, Glib::RefPtr<Gdk::Pixbuf> > xpm_map;
const char* const *get_xpm_data (std::string path);
std::string longest (std::vector<std::string>&);
bool key_is_legal_for_numeric_entry (guint keyval);
+void reset_dpi ();
+void set_pango_fontsize ();
#endif /* __ardour_gtk_utils_h__ */