diff options
Diffstat (limited to 'gtk2_ardour/editor_region_list.cc')
-rw-r--r-- | gtk2_ardour/editor_region_list.cc | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/gtk2_ardour/editor_region_list.cc b/gtk2_ardour/editor_region_list.cc index c9067cacfe..54bc71e074 100644 --- a/gtk2_ardour/editor_region_list.cc +++ b/gtk2_ardour/editor_region_list.cc @@ -134,6 +134,18 @@ Editor::add_region_to_region_display (boost::shared_ptr<Region> region) } else if (region->whole_file()) { + TreeModel::iterator i; + TreeModel::Children rows = region_list_model->children(); + + for (i = rows.begin(); i != rows.end(); ++i) { + + boost::shared_ptr<Region> rr = (*i)[region_list_columns.region]; + + if (region->region_list_equivalent (rr)) { + return; + } + } + row = *(region_list_model->append()); if (missing_source) { c.set_rgb(65535,0,0); // FIXME: error color from style @@ -203,6 +215,18 @@ Editor::add_region_to_region_display (boost::shared_ptr<Region> region) break; } } + + TreeModel::iterator ii; + TreeModel::Children subrows = (*i).children(); + + for (ii = subrows.begin(); ii != subrows.end(); ++ii) { + + boost::shared_ptr<Region> rrr = (*ii)[region_list_columns.region]; + + if (region->region_list_equivalent (rrr)) { + return; + } + } } if (!found_parent) { @@ -307,6 +331,10 @@ Editor::insert_into_tmp_regionlist(boost::shared_ptr<Region> region) void Editor::redisplay_regions () { + if (no_region_list_redisplay) { + return; + } + if (session) { region_list_display.set_model (Glib::RefPtr<Gtk::TreeStore>(0)); |