X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fgain_meter.cc;h=a405f074ae5949431bdc8210826b83bd27a20e16;hb=e34470b7bdeefa71c081adbd957829a1c6dbf247;hp=54519546d0265144ca3a73eaf01445ff638347c4;hpb=5249f826035c35ae3ea75cbbd2457a0d8a510a79;p=ardour.git diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc index 54519546d0..a405f074ae 100644 --- a/gtk2_ardour/gain_meter.cc +++ b/gtk2_ardour/gain_meter.cc @@ -61,27 +61,8 @@ sigc::signal GainMeterBase::ResetAllPeakDisplays; sigc::signal GainMeterBase::ResetGroupPeakDisplays; GainMeter::MetricPatterns GainMeter::metric_patterns; -Glib::RefPtr GainMeter::slider; -Glib::RefPtr GainMeter::slider_desensitised; - -void -GainMeter::setup_slider_pix () -{ - if ((slider = ::get_icon ("fader_belt")) == 0) { - throw failed_constructor(); - } - - if ((slider_desensitised = ::get_icon ("fader_belt_desensitised")) == 0) { - throw failed_constructor(); - } -} - -GainMeterBase::GainMeterBase (Session* s, - const Glib::RefPtr& pix, - const Glib::RefPtr& pix_desensitised, - bool horizontal, - int fader_length) +GainMeterBase::GainMeterBase (Session* s, bool horizontal, int fader_length, int fader_girth) : gain_adjustment (gain_to_slider_position_with_max (1.0, Config->get_max_gain()), 0.0, 1.0, 0.01, 0.1) , gain_automation_style_button ("") , gain_automation_state_button ("") @@ -100,17 +81,9 @@ GainMeterBase::GainMeterBase (Session* s, _width = Wide; if (horizontal) { - gain_slider = manage (new HSliderController (pix, - pix_desensitised, - &gain_adjustment, - fader_length, - false)); + gain_slider = manage (new HSliderController (&gain_adjustment, fader_length, fader_girth, false)); } else { - gain_slider = manage (new VSliderController (pix, - pix_desensitised, - &gain_adjustment, - fader_length, - false)); + gain_slider = manage (new VSliderController (&gain_adjustment, fader_length, fader_girth, false)); } level_meter = new LevelMeter(_session); @@ -427,7 +400,20 @@ GainMeterBase::gain_activated () } if (gain_display.has_focus()) { - PublicEditor::instance().reset_focus(); + Gtk::Widget* w = gain_display.get_toplevel(); + if (w) { + Gtk::Window* win = dynamic_cast (w); + + /* sigh. gtkmm doesn't wrap get_default_widget() */ + + if (win) { + GtkWidget* f = gtk_window_get_default_widget (win->gobj()); + if (f) { + gtk_widget_grab_focus (f); + return; + } + } + } } } @@ -514,10 +500,7 @@ GainMeterBase::set_meter_strip_name (const char * name) void GainMeterBase::set_fader_name (const char * name) { - uint32_t rgb_active = rgba_from_style (name, 0xff, 0, 0xff, 0, "bg", STATE_ACTIVE, false); - uint32_t rgb_normal = rgba_from_style (name, 0xff, 0xff, 0, 0, "bg", STATE_NORMAL, false); - - gain_slider->set_border_colors (rgb_normal, rgb_active); + gain_slider->set_name (name); } void @@ -867,7 +850,7 @@ GainMeterBase::on_theme_changed() } GainMeter::GainMeter (Session* s, int fader_length) - : GainMeterBase (s, slider, slider_desensitised, false, fader_length) + : GainMeterBase (s, false, fader_length, 24) , gain_display_box(true, 0) , hbox(true, 2) {