Better fix for non-rearrangement after open for the port matrix.
authorCarl Hetherington <carl@carlh.net>
Sat, 18 Jul 2009 03:17:47 +0000 (03:17 +0000)
committerCarl Hetherington <carl@carlh.net>
Sat, 18 Jul 2009 03:17:47 +0000 (03:17 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@5377 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/port_group.cc
gtk2_ardour/port_group.h
gtk2_ardour/port_matrix.cc
gtk2_ardour/port_matrix.h

index beaa69959d0a220a009eb9642df3da5b8066f8d0..2e9ef4389de126c62dde2a5b92652309910e64d7 100644 (file)
@@ -64,7 +64,7 @@ PortGroup::add_bundle (boost::shared_ptr<Bundle> b)
 
        _bundles.push_back (r);
 
-       Modified ();
+       Changed ();
 }
 
 /** Add a bundle to a group.
@@ -84,7 +84,7 @@ PortGroup::add_bundle (boost::shared_ptr<Bundle> b, Gdk::Color c)
 
        _bundles.push_back (r);
 
-       Modified ();
+       Changed ();
 }
 
 void
@@ -104,7 +104,7 @@ PortGroup::remove_bundle (boost::shared_ptr<Bundle> b)
        i->changed_connection.disconnect ();
        _bundles.erase (i);
        
-       Modified ();
+       Changed ();
 }
 
 void
@@ -122,7 +122,7 @@ PortGroup::clear ()
        }
 
        _bundles.clear ();
-       Modified ();
+       Changed ();
 }
 
 bool
@@ -439,7 +439,7 @@ PortGroupList::add_group (boost::shared_ptr<PortGroup> g)
 {
        _groups.push_back (g);
        
-       g->Modified.connect (sigc::mem_fun (*this, &PortGroupList::emit_changed));
+       g->Changed.connect (sigc::mem_fun (*this, &PortGroupList::emit_changed));
        
        _bundle_changed_connections.push_back (
                g->BundleChanged.connect (sigc::hide (sigc::mem_fun (*this, &PortGroupList::emit_changed)))
index f3f84a23ad19d40f66557f25cd32ff7ae126cca4..22dee8de5efdae924f4a06f6ff977198b00571a4 100644 (file)
@@ -64,12 +64,12 @@ public:
 
        void set_visible (bool v) {
                _visible = v;
-               Modified ();
+               Changed ();
        }
 
        bool has_port (std::string const &) const;
 
-       sigc::signal<void> Modified;
+       sigc::signal<void> Changed;
        sigc::signal<void, ARDOUR::Bundle::Change> BundleChanged;
 
        struct BundleRecord {
index 820920ed14d8c9c9f5458603f5b5db8554a6d030..a35ec2f0469c1cc430c57d9ef40f9f65d896cf2c 100644 (file)
@@ -51,7 +51,7 @@ PortMatrix::PortMatrix (ARDOUR::Session& session, ARDOUR::DataType type)
          _min_height_divisor (1),
          _show_only_bundles (false),
          _inhibit_toggle_show_only_bundles (false),
-         _first_setup (true)
+         _realized (false)
 {
        _body = new PortMatrixBody (this);
 
@@ -115,7 +115,7 @@ PortMatrix::routes_changed ()
 void
 PortMatrix::setup ()
 {
-       if (_first_setup) {
+       if (!_realized) {
                select_arrangement ();
        }
 
@@ -123,8 +123,6 @@ PortMatrix::setup ()
        setup_scrollbars ();
        queue_draw ();
 
-       _first_setup = false;
-       
        show_all ();
 }
 
@@ -461,3 +459,17 @@ PortMatrix::max_size () const
 
        return m;
 }
+
+void
+PortMatrix::on_realize ()
+{
+       Widget::on_realize ();
+       _realized = true;
+}
+
+void
+PortMatrix::on_unrealize ()
+{
+       Widget::on_unrealize ();
+       _realized = false;
+}
index 76f6d09a6ac78d657552455be73d7c33978cbd80..666a55da04e80a319f1bfacaf7cb19f9793c467a 100644 (file)
@@ -160,6 +160,8 @@ private:
        void hide_group (boost::weak_ptr<PortGroup>);
        void show_group (boost::weak_ptr<PortGroup>);
        void toggle_show_only_bundles ();
+       void on_realize ();
+       void on_unrealize ();
 
        /// port type that we are working with
        ARDOUR::DataType _type;
@@ -175,7 +177,7 @@ private:
        int _min_height_divisor;
        bool _show_only_bundles;
        bool _inhibit_toggle_show_only_bundles;
-       bool _first_setup;
+       bool _realized;
 };
 
 #endif