apl->foreach_crossfade (this, &AudioStreamView::add_crossfade);
}
- RegionViewList copy;
+ RegionViewList copy;
+ /* Place regions */
for (i = region_views.begin(); i != region_views.end(); ) {
tmp = i;
tmp++;
(*i)->enable_display(true);
}
- /*
- sort regionviews by layer so that when we call region_layered ()
- the canvas layering works out (in non-stacked mode).
- */
+ /* Sort regionviews by layer so that when we call region_layered ()
+ the canvas layering works out (in non-stacked mode). */
if (copy.size() == 0) {
copy.push_front((*i));
}
for (RegionViewList::iterator j = copy.begin(); j != copy.end(); ++j) {
-
if ((*j)->region()->layer() >= (*i)->region()->layer()) {
copy.insert(j, (*i));
break;
xi = tmpx;
}
- /* now fix canvas layering */
-
+ /* Fix canvas layering */
for (RegionViewList::iterator j = copy.begin(); j != copy.end(); ++j) {
- (*j)->enable_display(true);
- (*j)->set_height (height);
- region_layered (*j);
+ (*j)->enable_display(true);
+ (*j)->set_height (height);
+ region_layered (*j);
}
}
continue;
}
- const boost::shared_ptr<const Region> original = arv->region();
+ const boost::shared_ptr<const Region> original = rv->region();
boost::shared_ptr<Region> region_copy = RegionFactory::create (original);
- boost::shared_ptr<AudioRegion> ar = boost::dynamic_pointer_cast<AudioRegion> (region_copy);
nrv->get_canvas_group()->show ();
new_regionviews.push_back (nrv);
disappear on copying regions
*/
- //rv->get_time_axis_view().reveal_dependent_views (*rv);
+ //rv->get_time_axis_view().reveal_dependent_views (*rv);
} else if (changed_tracks) {
new_region = RegionFactory::create (rv->region());
{
/* no brushing without a useful snap setting */
- // FIXME
- AudioRegionView* arv = dynamic_cast<AudioRegionView*>(rv);
- assert(arv);
-
switch (snap_mode) {
case SnapMagnetic:
return; /* can't work because it allows region to be placed anywhere */
return;
}
- RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*>(&arv->get_time_axis_view());
+ RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*>(&rv->get_time_axis_view());
if (rtv == 0 || !rtv->is_track()) {
return;
double speed = rtv->get_diskstream()->speed();
XMLNode &before = playlist->get_state();
- playlist->add_region (boost::dynamic_pointer_cast<AudioRegion> (RegionFactory::create (arv->audio_region())), (nframes64_t) (pos * speed));
+ playlist->add_region (RegionFactory::create (rv->region()), (nframes64_t) (pos * speed));
XMLNode &after = playlist->get_state();
session->add_command(new MementoCommand<Playlist>(*playlist.get(), &before, &after));
MidiRegionView::set_y_position_and_height (double y, double h)
{
RegionView::set_y_position_and_height(y, h - 1);
+
+ /* XXX why is this code here */
+
+ _height = h;
if (_enable_display) {
mrv->midi_region()->midi_source(0)->load_model();
}
- //_lowest_note = 60; // middle C
- //_highest_note = _lowest_note + 11;
-
if (_trackview.is_midi_track()) {
- _trackview.get_diskstream()->playlist()->foreach_region (static_cast<StreamView*>(this), &StreamView::add_region_view);
+ _trackview.get_diskstream()->playlist()->foreach_region (
+ static_cast<StreamView*>(this), &StreamView::add_region_view);
}
/* Always display at least one octave */
if (_highest_note == 127) {
- if (_lowest_note > (127 - 11))
+ if (_lowest_note > (127 - 11)) {
_lowest_note = 127 - 11;
+ }
} else if (_highest_note < _lowest_note + 11) {
_highest_note = _lowest_note + 11;
}
+ RegionViewList copy;
+
+ /* Place regions */
for (i = region_views.begin(); i != region_views.end(); ) {
tmp = i;
tmp++;
(*i)->enable_display(true);
(*i)->set_y_position_and_height(0, height); // apply note range
}
+
+ /* Sort regionviews by layer so that when we call region_layered ()
+ the canvas layering works out (in non-stacked mode). */
+
+ if (copy.size() == 0) {
+ copy.push_front((*i));
+ i = tmp;
+ continue;
+ }
+
+ RegionViewList::iterator k = copy.begin();
+ RegionViewList::iterator l = copy.end();
+ l--;
+
+ if ((*i)->region()->layer() <= (*k)->region()->layer()) {
+ copy.push_front((*i));
+ i = tmp;
+ continue;
+ } else if ((*i)->region()->layer() >= (*l)->region()->layer()) {
+ copy.push_back((*i));
+ i = tmp;
+ continue;
+ }
+
+ for (RegionViewList::iterator j = copy.begin(); j != copy.end(); ++j) {
+ if ((*j)->region()->layer() >= (*i)->region()->layer()) {
+ copy.insert(j, (*i));
+ break;
+ }
+ }
i = tmp;
}
- /* now fix layering */
-
- for (RegionViewList::iterator i = region_views.begin(); i != region_views.end(); ++i) {
- region_layered (*i);
+ /* Fix canvas layering */
+ for (RegionViewList::iterator j = copy.begin(); j != copy.end(); ++j) {
+ (*j)->enable_display(true);
+ (*j)->set_height (height);
+ region_layered (*j);
}
+ /* Update note range and draw note lines */
note_range_adjustment.set_page_size(_highest_note - _lowest_note);
note_range_adjustment.set_value(_lowest_note);
NoteRangeChanged();