Better fix for non-rearrangement after open for the port matrix.

git-svn-id: svn://localhost/ardour2/branches/3.0@5377 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Carl Hetherington 2009-07-18 03:17:47 +00:00
parent fea3992f29
commit 2e7eeef448
4 changed files with 26 additions and 12 deletions

View 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)))

View 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 {

View 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;
}

View 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