mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-10 08:36:32 +01:00
Better method for redrawing gain meter pixmaps upon theme change
git-svn-id: svn://localhost/ardour2/trunk@1921 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
989dbbb95d
commit
800178bb66
2 changed files with 13 additions and 6 deletions
|
|
@ -86,6 +86,7 @@ GainMeter::GainMeter (boost::shared_ptr<IO> io, Session& s)
|
||||||
ignore_toggle = false;
|
ignore_toggle = false;
|
||||||
meter_menu = 0;
|
meter_menu = 0;
|
||||||
next_release_selects = false;
|
next_release_selects = false;
|
||||||
|
style_changed = true;
|
||||||
|
|
||||||
gain_slider = manage (new VSliderController (slider,
|
gain_slider = manage (new VSliderController (slider,
|
||||||
&gain_adjustment,
|
&gain_adjustment,
|
||||||
|
|
@ -209,6 +210,8 @@ GainMeter::GainMeter (boost::shared_ptr<IO> io, Session& s)
|
||||||
|
|
||||||
ResetAllPeakDisplays.connect (mem_fun(*this, &GainMeter::reset_peak_display));
|
ResetAllPeakDisplays.connect (mem_fun(*this, &GainMeter::reset_peak_display));
|
||||||
ResetGroupPeakDisplays.connect (mem_fun(*this, &GainMeter::reset_group_peak_display));
|
ResetGroupPeakDisplays.connect (mem_fun(*this, &GainMeter::reset_group_peak_display));
|
||||||
|
|
||||||
|
ThemeChanged.connect (mem_fun(*this, &GainMeter::redraw_pixmaps));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -273,14 +276,9 @@ gint
|
||||||
GainMeter::meter_metrics_expose (GdkEventExpose *ev)
|
GainMeter::meter_metrics_expose (GdkEventExpose *ev)
|
||||||
{
|
{
|
||||||
static Glib::RefPtr<Gtk::Style> meter_style;
|
static Glib::RefPtr<Gtk::Style> meter_style;
|
||||||
bool style_changed = false;
|
|
||||||
|
|
||||||
if (!meter_style ||
|
if (style_changed) {
|
||||||
meter_style->get_bg(Gtk::STATE_NORMAL).get_red() != meter_metric_area.get_style()->get_bg(Gtk::STATE_NORMAL).get_red() ||
|
|
||||||
meter_style->get_bg(Gtk::STATE_NORMAL).get_green() != meter_metric_area.get_style()->get_bg(Gtk::STATE_NORMAL).get_green() ||
|
|
||||||
meter_style->get_bg(Gtk::STATE_NORMAL).get_blue() != meter_metric_area.get_style()->get_bg(Gtk::STATE_NORMAL).get_blue()) {
|
|
||||||
meter_style = meter_metric_area.get_style();
|
meter_style = meter_metric_area.get_style();
|
||||||
style_changed = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Glib::RefPtr<Gdk::Window> win (meter_metric_area.get_window());
|
Glib::RefPtr<Gdk::Window> win (meter_metric_area.get_window());
|
||||||
|
|
@ -311,9 +309,16 @@ GainMeter::meter_metrics_expose (GdkEventExpose *ev)
|
||||||
win->draw_rectangle (bg_gc, true, draw_rect.x, draw_rect.y, draw_rect.width, draw_rect.height);
|
win->draw_rectangle (bg_gc, true, draw_rect.x, draw_rect.y, draw_rect.width, draw_rect.height);
|
||||||
win->draw_drawable (fg_gc, pixmap, draw_rect.x, draw_rect.y, draw_rect.x, draw_rect.y, draw_rect.width, draw_rect.height);
|
win->draw_drawable (fg_gc, pixmap, draw_rect.x, draw_rect.y, draw_rect.x, draw_rect.y, draw_rect.width, draw_rect.height);
|
||||||
|
|
||||||
|
style_changed = false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
GainMeter::redraw_pixmaps(string blah)
|
||||||
|
{
|
||||||
|
style_changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
GainMeter::~GainMeter ()
|
GainMeter::~GainMeter ()
|
||||||
{
|
{
|
||||||
if (meter_menu) {
|
if (meter_menu) {
|
||||||
|
|
|
||||||
|
|
@ -186,6 +186,8 @@ class GainMeter : public Gtk::VBox
|
||||||
static Glib::RefPtr<Gdk::Pixbuf> slider;
|
static Glib::RefPtr<Gdk::Pixbuf> slider;
|
||||||
static Glib::RefPtr<Gdk::Pixbuf> rail;
|
static Glib::RefPtr<Gdk::Pixbuf> rail;
|
||||||
static int setup_slider_pix ();
|
static int setup_slider_pix ();
|
||||||
|
int redraw_pixmaps(string);
|
||||||
|
bool style_changed;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* __ardour_gtk_gain_meter_h__ */
|
#endif /* __ardour_gtk_gain_meter_h__ */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue