return to the old way of editing track names, but hopefully better than it was. likel...
[ardour.git] / gtk2_ardour / gain_meter.cc
index 54519546d0265144ca3a73eaf01445ff638347c4..a405f074ae5949431bdc8210826b83bd27a20e16 100644 (file)
@@ -61,27 +61,8 @@ sigc::signal<void> GainMeterBase::ResetAllPeakDisplays;
 sigc::signal<void,RouteGroup*> GainMeterBase::ResetGroupPeakDisplays;
 
 GainMeter::MetricPatterns GainMeter::metric_patterns;
-Glib::RefPtr<Gdk::Pixbuf> GainMeter::slider;
-Glib::RefPtr<Gdk::Pixbuf> 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<Gdk::Pixbuf>& pix,
-                             const Glib::RefPtr<Gdk::Pixbuf>& 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<Gtk::Window*> (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)
 {