From: Paul Davis Date: Thu, 24 Jan 2013 21:58:07 +0000 (+0000) Subject: fix up rather odd sizing model for ProcessorBox that affected Pixfaders used as controls X-Git-Tag: 3.0~137 X-Git-Url: https://main.carlh.net/gitweb/?a=commitdiff_plain;h=a97376dd808f72e0bc0c1a0f40c1a6244f0b0c3c;p=ardour.git fix up rather odd sizing model for ProcessorBox that affected Pixfaders used as controls git-svn-id: svn://localhost/ardour2/branches/3.0@13994 d708f5d6-7413-0410-9779-e7cbd77b26cf --- diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc index 7bdaa8b3cb..91551e19bb 100644 --- a/gtk2_ardour/processor_box.cc +++ b/gtk2_ardour/processor_box.cc @@ -296,14 +296,6 @@ ProcessorEntry::name (Width w) const return name_display; } -void -ProcessorEntry::set_pixel_width (int p) -{ - for (list::iterator i = _controls.begin(); i != _controls.end(); ++i) { - (*i)->set_pixel_width (p); - } -} - void ProcessorEntry::show_all_controls () { @@ -469,12 +461,6 @@ ProcessorEntry::Control::set_tooltip () ARDOUR_UI::instance()->set_tip (_button, sm); } -void -ProcessorEntry::Control::set_pixel_width (int p) -{ - _slider.set_fader_length (p); -} - void ProcessorEntry::Control::slider_adjusted () { @@ -705,7 +691,6 @@ ProcessorBox::ProcessorBox (ARDOUR::Session* sess, boost::functionset_enum_width (w); } - _redisplay_pending = true; - + queue_resize (); } Gtk::Menu* @@ -1356,7 +1340,6 @@ ProcessorBox::redisplay_processors () if (_visible_prefader_processors == 0) { // fader only BlankProcessorEntry* bpe = new BlankProcessorEntry (this, _width); - bpe->set_pixel_width (get_allocation().get_width()); processor_display.add_child (bpe); } @@ -1481,8 +1464,6 @@ ProcessorBox::add_processor_to_display (boost::weak_ptr p) e = new ProcessorEntry (this, processor, _width); } - e->set_pixel_width (get_allocation().get_width()); - /* Set up this entry's state from the GUIObjectState */ XMLNode* proc = entry_gui_object_state (e); if (proc) { @@ -2499,22 +2480,6 @@ ProcessorBox::generate_processor_title (boost::shared_ptr pi) return string_compose(_("%1: %2 (by %3)"), _route->name(), pi->name(), maker); } -void -ProcessorBox::on_size_allocate (Allocation& a) -{ - HBox::on_size_allocate (a); - - if (_redisplay_pending) { - _redisplay_pending = false; - redisplay_processors (); - } else { - list children = processor_display.children (); - for (list::const_iterator i = children.begin(); i != children.end(); ++i) { - (*i)->set_pixel_width (a.get_width ()); - } - } -} - /** @param p Processor. * @return the UI window for \a p. */ diff --git a/gtk2_ardour/processor_box.h b/gtk2_ardour/processor_box.h index f500a06838..157cdbf27e 100644 --- a/gtk2_ardour/processor_box.h +++ b/gtk2_ardour/processor_box.h @@ -119,7 +119,6 @@ public: void set_position (Position); boost::shared_ptr processor () const; void set_enum_width (Width); - virtual void set_pixel_width (int); /** Hide any widgets that should be hidden */ virtual void hide_things (); @@ -156,7 +155,6 @@ private: public: Control (boost::shared_ptr, std::string const &); - void set_pixel_width (int); void set_visible (bool); void add_state (XMLNode *) const; void set_state (XMLNode const *); @@ -367,7 +365,6 @@ class ProcessorBox : public Gtk::HBox, public PluginInterestedObject, public ARD gint idle_delete_processor (boost::weak_ptr); void weird_plugin_dialog (ARDOUR::Plugin& p, ARDOUR::Route::ProcessorStreams streams); - void on_size_allocate (Gtk::Allocation &); void setup_entry_positions (); diff --git a/libs/gtkmm2ext/gtkmm2ext/pixfader.h b/libs/gtkmm2ext/gtkmm2ext/pixfader.h index c43daa7d50..2953cc6333 100644 --- a/libs/gtkmm2ext/gtkmm2ext/pixfader.h +++ b/libs/gtkmm2ext/gtkmm2ext/pixfader.h @@ -35,7 +35,6 @@ class PixFader : public Gtk::DrawingArea PixFader (Gtk::Adjustment& adjustment, int orientation, int span, int girth); virtual ~PixFader (); - void set_fader_length (int); void set_default_value (float); void set_text (const std::string&); diff --git a/libs/gtkmm2ext/pixfader.cc b/libs/gtkmm2ext/pixfader.cc index 005e9dcefd..f4e362bca1 100644 --- a/libs/gtkmm2ext/pixfader.cc +++ b/libs/gtkmm2ext/pixfader.cc @@ -21,6 +21,8 @@ #include +#include "pbd/stacktrace.h" + #include "gtkmm2ext/pixfader.h" #include "gtkmm2ext/keyboard.h" #include "gtkmm2ext/rgb_macros.h" @@ -280,12 +282,11 @@ PixFader::on_expose_event (GdkEventExpose* ev) } } } - - if ( !_text.empty() ) { - cairo_new_path (cr); + if ( !_text.empty() ) { /* center text */ + cairo_new_path (cr); cairo_move_to (cr, (get_width() - _text_width)/2.0, get_height()/2.0 - _text_height/2.0); cairo_set_source_rgba (cr, text_r, text_g, text_b, 0.9); pango_cairo_show_layout (cr, _layout->gobj()); @@ -308,11 +309,11 @@ void PixFader::on_size_request (GtkRequisition* req) { if (_orien == VERT) { - req->width = girth; - req->height = span; + req->width = (girth ? girth : -1); + req->height = (span ? span : -1); } else { - req->height = girth; - req->width = span; + req->height = (girth ? girth : -1); + req->width = (span ? span : -1); } } @@ -329,6 +330,11 @@ PixFader::on_size_allocate (Gtk::Allocation& alloc) span = alloc.get_width (); } + if (is_realized()) { + /* recreate patterns in case we've changed size */ + create_patterns (); + } + update_unity_position (); } @@ -534,14 +540,6 @@ PixFader::display_span () return ds; } -void -PixFader::set_fader_length (int l) -{ - span = l; - update_unity_position (); - queue_resize (); -} - void PixFader::update_unity_position () {