- list<RegionView *>::iterator i, tmp;
-
- for (i = region_views.begin(); i != region_views.end(); ++i) {
- (*i)->enable_display(true); // FIXME: double display, remove
- (*i)->set_valid (false);
-
- /* FIXME: slow. MidiRegionView needs a find_note_range method
- * that finds the range without wasting time drawing the events */
-
- // Load model if it isn't already, to get note range
- MidiRegionView* mrv = dynamic_cast<MidiRegionView*>(*i);
- mrv->midi_region()->midi_source(0)->load_model();
+ boost::shared_ptr<MidiRegion> mr = boost::dynamic_pointer_cast<MidiRegion>(r);
+ if (mr) {
+ mr->midi_source(0)->load_model();
+ _range_dirty = update_data_note_range(
+ mr->model()->lowest_note(),
+ mr->model()->highest_note());