diff options
author | Doug McLain <doug@nostar.net> | 2008-02-24 19:13:09 +0000 |
---|---|---|
committer | Doug McLain <doug@nostar.net> | 2008-02-24 19:13:09 +0000 |
commit | 2f18e339cdffadbc5a37db39207dc1f7be7cb8ac (patch) | |
tree | 6d60e33620b1d87198ac6919a8ca4d1262b9d2a4 | |
parent | 6299560116cb1e024f214f4928aa88605a5cddff (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.cc | 3 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui.h | 1 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui2.cc | 1 | ||||
-rw-r--r-- | gtk2_ardour/gain_meter.cc | 8 | ||||
-rw-r--r-- | gtk2_ardour/gain_meter.h | 3 | ||||
-rw-r--r-- | gtk2_ardour/marker.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/option_editor.cc | 20 | ||||
-rw-r--r-- | gtk2_ardour/region_gain_line.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/region_view.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/utils.cc | 29 | ||||
-rw-r--r-- | gtk2_ardour/utils.h | 2 |
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__ */ |