Drag::_raw_grab_time is set to the correct time-domain. However
during ::motion() and other operations the adjusted time was
always AudioTime.
Most notably this caused editor->selection->time to have
different time-domains for start and end.
I/O plugin Controls are destroyed with ~IOPlug, however
Session::destroy()'s call to drop_references() still
triggers AutomationControl::session_going_away() on the
binding proxy.
This is even properly documented in session_object.h:
> A named object associated with a Session. Objects derived
> from this class are expected to be destroyed before the
> session calls drop_references().
This reverts commit c578695a64.
When hovering over a control point there is still the "Fader"
cursor shown. It is also handy to be able to directly modify
a control-point right after adding it.
A freehand draw operation can be still be initiated above,
below, or left/right of a given control point.
Playlist::add_region, Playlist::add_region_internal always
adds the region to the top of the playlist, ignoring the
region's layer.
Note that there is also difference between
Region::layer and Region::layering_index.
Previously creating a new preset first attempted to load
it from disk, before creating it. This resulted in a
`XML error: failed to load external entity`.
There is a DisplaySuspender in MidiRegionView::init(), and another invoked
during the addition of a RegionView to a StreamView. Before this change, both
suspenders were created to invoke a full "model-changed" redisplay. Since every
RegionView must be added to a StreamView to be visible, we only need the second
suspender to invoke the model-change. The first one can be just a view
change (and probably isn't necessary at all, but I did not want to change that
much at this point in time).
VelocityGhostRegion used the visibility of the "parent" note canvas item of a
lollipop canvas item to determine the lolli's visibility. But during the
construction of the MidiRegionView, the note's container is not yet visible, so
this fails.
In addition this logic would hide lollis for notes that are outside the current
visible note range of the track (because the parent note item was not visible).
This change adds a method to MidiRegionView to decide if a note is within the
region's time range, and if so, we show the lollipop item. This means that
lollis for notes outside the note-range will still be visible, which seems more
correct. In addition, the nascent condition of the parent note's container no
longer affects lolli visibility.