summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_region_list.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/editor_region_list.cc')
-rw-r--r--gtk2_ardour/editor_region_list.cc28
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));