ignore_toggle = false;
meter_menu = 0;
next_release_selects = false;
+ style_changed = true;
gain_slider = manage (new VSliderController (slider,
&gain_adjustment,
ResetAllPeakDisplays.connect (mem_fun(*this, &GainMeter::reset_peak_display));
ResetGroupPeakDisplays.connect (mem_fun(*this, &GainMeter::reset_group_peak_display));
+
+ ThemeChanged.connect (mem_fun(*this, &GainMeter::redraw_pixmaps));
}
void
GainMeter::meter_metrics_expose (GdkEventExpose *ev)
{
static Glib::RefPtr<Gtk::Style> meter_style;
- bool style_changed = false;
- if (!meter_style ||
- 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()) {
+ if (style_changed) {
meter_style = meter_metric_area.get_style();
- style_changed = true;
}
Glib::RefPtr<Gdk::Window> win (meter_metric_area.get_window());
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);
+ style_changed = false;
return true;
}
+int
+GainMeter::redraw_pixmaps(string blah)
+{
+ style_changed = true;
+}
+
GainMeter::~GainMeter ()
{
if (meter_menu) {
static Glib::RefPtr<Gdk::Pixbuf> slider;
static Glib::RefPtr<Gdk::Pixbuf> rail;
static int setup_slider_pix ();
+ int redraw_pixmaps(string);
+ bool style_changed;
};
#endif /* __ardour_gtk_gain_meter_h__ */