restore "add MIDI region on click in MIDI track" functionality
git-svn-id: svn://localhost/ardour2/branches/3.0@7768 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
00438c9c7f
commit
bc8aeb0425
|
@ -1336,26 +1336,46 @@ void
|
|||
RegionCreateDrag::motion (GdkEvent* event, bool first_move)
|
||||
{
|
||||
if (first_move) {
|
||||
/* don't use a zero-length region otherwise its region view will be hidden when it is created */
|
||||
_region = _view->add_region (grab_frame(), 1, false);
|
||||
add_region();
|
||||
} else {
|
||||
framepos_t const f = adjusted_current_frame (event);
|
||||
if (f < grab_frame()) {
|
||||
_region->set_position (f, this);
|
||||
}
|
||||
|
||||
/* again, don't use a zero-length region (see above) */
|
||||
framecnt_t const len = abs (f - grab_frame ());
|
||||
_region->set_length (len < 1 ? 1 : len, this);
|
||||
}
|
||||
if (_region) {
|
||||
framepos_t const f = adjusted_current_frame (event);
|
||||
if (f < grab_frame()) {
|
||||
_region->set_position (f, this);
|
||||
}
|
||||
|
||||
/* again, don't use a zero-length region (see above) */
|
||||
framecnt_t const len = abs (f - grab_frame ());
|
||||
_region->set_length (len < 1 ? 1 : len, this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
RegionCreateDrag::finished (GdkEvent* event, bool movement_occurred)
|
||||
{
|
||||
if (movement_occurred) {
|
||||
_editor->commit_reversible_command ();
|
||||
if (!movement_occurred) {
|
||||
add_region ();
|
||||
}
|
||||
|
||||
if (_region) {
|
||||
_editor->commit_reversible_command ();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
RegionCreateDrag::add_region ()
|
||||
{
|
||||
if (_editor->session()) {
|
||||
const TempoMap& map (_editor->session()->tempo_map());
|
||||
framecnt_t pos = grab_frame();
|
||||
const Meter& m = map.meter_at (pos);
|
||||
/* not that the frame rate used here can be affected by pull up/down which
|
||||
might be wrong.
|
||||
*/
|
||||
framecnt_t len = m.frames_per_bar (map.tempo_at (pos), _editor->session()->frame_rate());
|
||||
_region = _view->add_region (grab_frame(), len, false);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -398,6 +398,7 @@ public:
|
|||
private:
|
||||
MidiTimeAxisView* _view;
|
||||
boost::shared_ptr<ARDOUR::Region> _region;
|
||||
void add_region ();
|
||||
};
|
||||
|
||||
/** Drags to resize MIDI notes */
|
||||
|
|
|
@ -682,6 +682,9 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
|
|||
return true;
|
||||
|
||||
case StreamItem:
|
||||
cerr << "press on stream item, internal? " << internal_editing() << " MIDI ? "
|
||||
<< dynamic_cast<MidiTimeAxisView*>(clicked_axisview)
|
||||
<< endl;
|
||||
if (internal_editing()) {
|
||||
if (dynamic_cast<MidiTimeAxisView*> (clicked_axisview)) {
|
||||
_drags->set (new RegionCreateDrag (this, item, clicked_axisview), event);
|
||||
|
|
Loading…
Reference in New Issue