Editor region list only updates columns that have changed,
This commit is contained in:
parent
5afe2993bd
commit
f65c592567
|
@ -483,8 +483,8 @@ EditorRegions::add_region (boost::shared_ptr<Region> region)
|
||||||
row[_columns.region] = region;
|
row[_columns.region] = region;
|
||||||
|
|
||||||
region_row_map.insert(pair<boost::shared_ptr<ARDOUR::Region>, Gtk::TreeModel::RowReference>(region, TreeRowReference(_model, TreePath (row))) );
|
region_row_map.insert(pair<boost::shared_ptr<ARDOUR::Region>, Gtk::TreeModel::RowReference>(region, TreeRowReference(_model, TreePath (row))) );
|
||||||
|
PropertyChange pc;
|
||||||
populate_row(region, (*row));
|
populate_row(region, (*row), pc);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -532,14 +532,13 @@ EditorRegions::region_changed (boost::shared_ptr<Region> r, const PropertyChange
|
||||||
our_interests.add (ARDOUR::Properties::fade_out_active);
|
our_interests.add (ARDOUR::Properties::fade_out_active);
|
||||||
|
|
||||||
if (what_changed.contains (our_interests)) {
|
if (what_changed.contains (our_interests)) {
|
||||||
|
|
||||||
if (last_row != 0) {
|
if (last_row != 0) {
|
||||||
|
|
||||||
TreeModel::iterator j = _model->get_iter (last_row.get_path());
|
TreeModel::iterator j = _model->get_iter (last_row.get_path());
|
||||||
boost::shared_ptr<Region> c = (*j)[_columns.region];
|
boost::shared_ptr<Region> c = (*j)[_columns.region];
|
||||||
|
|
||||||
if (c == r) {
|
if (c == r) {
|
||||||
populate_row (r, (*j));
|
populate_row (r, (*j), what_changed);
|
||||||
|
|
||||||
if (what_changed.contains (ARDOUR::Properties::hidden)) {
|
if (what_changed.contains (ARDOUR::Properties::hidden)) {
|
||||||
redisplay ();
|
redisplay ();
|
||||||
|
@ -559,7 +558,7 @@ EditorRegions::region_changed (boost::shared_ptr<Region> r, const PropertyChange
|
||||||
boost::shared_ptr<Region> c = (*j)[_columns.region];
|
boost::shared_ptr<Region> c = (*j)[_columns.region];
|
||||||
|
|
||||||
if (c == r) {
|
if (c == r) {
|
||||||
populate_row (r, (*j));
|
populate_row (r, (*j), what_changed);
|
||||||
|
|
||||||
if (what_changed.contains (ARDOUR::Properties::hidden)) {
|
if (what_changed.contains (ARDOUR::Properties::hidden)) {
|
||||||
redisplay ();
|
redisplay ();
|
||||||
|
@ -698,9 +697,9 @@ EditorRegions::update_row (boost::shared_ptr<Region> region)
|
||||||
it = region_row_map.find (region);
|
it = region_row_map.find (region);
|
||||||
|
|
||||||
if (it != region_row_map.end()){
|
if (it != region_row_map.end()){
|
||||||
|
PropertyChange c;
|
||||||
TreeModel::iterator j = _model->get_iter ((*it).second.get_path());
|
TreeModel::iterator j = _model->get_iter ((*it).second.get_path());
|
||||||
populate_row(region, (*j));
|
populate_row(region, (*j), c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -720,7 +719,8 @@ EditorRegions::update_all_rows ()
|
||||||
boost::shared_ptr<Region> region = (*j)[_columns.region];
|
boost::shared_ptr<Region> region = (*j)[_columns.region];
|
||||||
|
|
||||||
if (!region->automatic()) {
|
if (!region->automatic()) {
|
||||||
populate_row(region, (*j));
|
PropertyChange c;
|
||||||
|
populate_row(region, (*j), c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -787,26 +787,53 @@ EditorRegions::format_position (framepos_t pos, char* buf, size_t bufsize, bool
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
EditorRegions::populate_row (boost::shared_ptr<Region> region, TreeModel::Row const &row)
|
EditorRegions::populate_row (boost::shared_ptr<Region> region, TreeModel::Row const &row, PBD::PropertyChange const &what_changed)
|
||||||
{
|
{
|
||||||
boost::shared_ptr<AudioRegion> audioregion = boost::dynamic_pointer_cast<AudioRegion>(region);
|
boost::shared_ptr<AudioRegion> audioregion = boost::dynamic_pointer_cast<AudioRegion>(region);
|
||||||
//uint32_t used = _session->playlists->region_use_count (region);
|
//uint32_t used = _session->playlists->region_use_count (region);
|
||||||
/* Presently a region is only used once so let's save on the sequential scan to determine use count */
|
/* Presently a region is only used once so let's save on the sequential scan to determine use count */
|
||||||
uint32_t used = 1;
|
uint32_t used = 1;
|
||||||
|
|
||||||
populate_row_position (region, row, used);
|
PropertyChange c;
|
||||||
populate_row_end (region, row, used);
|
const bool all = what_changed == c;
|
||||||
populate_row_sync (region, row, used);
|
|
||||||
populate_row_fade_in (region, row, used, audioregion);
|
if (all || what_changed.contains (Properties::position)) {
|
||||||
populate_row_fade_out (region, row, used, audioregion);
|
populate_row_position (region, row, used);
|
||||||
populate_row_locked (region, row, used);
|
}
|
||||||
populate_row_glued (region, row, used);
|
if (all || what_changed.contains (Properties::start)) {
|
||||||
populate_row_muted (region, row, used);
|
populate_row_sync (region, row, used);
|
||||||
populate_row_opaque (region, row, used);
|
}
|
||||||
populate_row_length (region, row);
|
if (all || what_changed.contains (Properties::fade_in)) {
|
||||||
populate_row_source (region, row);
|
populate_row_fade_in (region, row, used, audioregion);
|
||||||
populate_row_name (region, row);
|
}
|
||||||
populate_row_used (region, row, used);
|
if (all || what_changed.contains (Properties::fade_out)) {
|
||||||
|
populate_row_fade_out (region, row, used, audioregion);
|
||||||
|
}
|
||||||
|
if (all || what_changed.contains (Properties::locked)) {
|
||||||
|
populate_row_locked (region, row, used);
|
||||||
|
}
|
||||||
|
if (all || what_changed.contains (Properties::position_lock_style)) {
|
||||||
|
populate_row_glued (region, row, used);
|
||||||
|
}
|
||||||
|
if (all || what_changed.contains (Properties::muted)) {
|
||||||
|
populate_row_muted (region, row, used);
|
||||||
|
}
|
||||||
|
if (all || what_changed.contains (Properties::opaque)) {
|
||||||
|
populate_row_opaque (region, row, used);
|
||||||
|
}
|
||||||
|
if (all || what_changed.contains (Properties::length)) {
|
||||||
|
populate_row_end (region, row, used);
|
||||||
|
populate_row_length (region, row);
|
||||||
|
}
|
||||||
|
if (all) {
|
||||||
|
populate_row_source (region, row);
|
||||||
|
}
|
||||||
|
if (all || what_changed.contains (Properties::name)) {
|
||||||
|
populate_row_name (region, row);
|
||||||
|
}
|
||||||
|
if (all) {
|
||||||
|
populate_row_used (region, row, used);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
|
|
@ -153,7 +153,7 @@ private:
|
||||||
|
|
||||||
void add_region (boost::shared_ptr<ARDOUR::Region>);
|
void add_region (boost::shared_ptr<ARDOUR::Region>);
|
||||||
|
|
||||||
void populate_row (boost::shared_ptr<ARDOUR::Region>, Gtk::TreeModel::Row const &);
|
void populate_row (boost::shared_ptr<ARDOUR::Region>, Gtk::TreeModel::Row const &, PBD::PropertyChange const &);
|
||||||
void populate_row_used (boost::shared_ptr<ARDOUR::Region> region, Gtk::TreeModel::Row const& row, uint32_t used);
|
void populate_row_used (boost::shared_ptr<ARDOUR::Region> region, Gtk::TreeModel::Row const& row, uint32_t used);
|
||||||
void populate_row_position (boost::shared_ptr<ARDOUR::Region> region, Gtk::TreeModel::Row const& row, uint32_t used);
|
void populate_row_position (boost::shared_ptr<ARDOUR::Region> region, Gtk::TreeModel::Row const& row, uint32_t used);
|
||||||
void populate_row_end (boost::shared_ptr<ARDOUR::Region> region, Gtk::TreeModel::Row const& row, uint32_t used);
|
void populate_row_end (boost::shared_ptr<ARDOUR::Region> region, Gtk::TreeModel::Row const& row, uint32_t used);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user