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, 22 insertions, 6 deletions
diff --git a/gtk2_ardour/editor_region_list.cc b/gtk2_ardour/editor_region_list.cc
index 6b6a2981b5..8a50332193 100644
--- a/gtk2_ardour/editor_region_list.cc
+++ b/gtk2_ardour/editor_region_list.cc
@@ -231,12 +231,19 @@ Editor::region_list_selection_changed()
TreeView::Selection::ListHandle_Path::iterator i = rows.begin();
TreeIter iter;
- /* just set the first selected region (in fact, the selection model might be SINGLE, which
- means there can only be one.
- */
-
if ((iter = region_list_model->get_iter (*i))) {
- set_selected_regionview_from_region_list (((*iter)[region_list_columns.region]), Selection::Set);
+ boost::shared_ptr<Region> r = (*iter)[region_list_columns.region];
+
+ /* they could have clicked on a row that is just a placeholder, like "Hidden" */
+
+ if (r) {
+
+ /* just set the first selected region (in fact, the selection model might be SINGLE, which
+ means there can only be one.
+ */
+
+ set_selected_regionview_from_region_list (r, Selection::Set);
+ }
}
}
}
@@ -564,7 +571,16 @@ Editor::region_list_selection_mapover (slot<void,boost::shared_ptr<Region> > sl)
TreeIter iter;
if ((iter = region_list_model->get_iter (*i))) {
- sl (((*iter)[region_list_columns.region]));
+
+ /* some rows don't have a region associated with them, but can still be
+ selected (XXX maybe prevent them from being selected)
+ */
+
+ boost::shared_ptr<Region> r = (*iter)[region_list_columns.region];
+
+ if (r) {
+ sl (r);
+ }
}
}
}