fix start and end trim of timeline regions in a pianoroll
This commit is contained in:
@@ -71,6 +71,7 @@
|
||||
#include "keyboard.h"
|
||||
#include "mergeable_line.h"
|
||||
#include "pianoroll.h"
|
||||
#include "pianoroll_midi_view.h"
|
||||
#include "midi_region_view.h"
|
||||
#include "midi_selection.h"
|
||||
#include "midi_time_axis.h"
|
||||
@@ -7572,6 +7573,13 @@ ClipStartDrag::finished (GdkEvent* event, bool movement_occured)
|
||||
}
|
||||
|
||||
timepos_t pos = adjusted_current_time (event);
|
||||
|
||||
assert (mce.midi_view());
|
||||
|
||||
if (mce.midi_view()->show_source()) {
|
||||
pos = mce.midi_view()->source_beats_to_timeline (pos.beats());
|
||||
}
|
||||
|
||||
editing_context.snap_to_with_modifier (pos, event, Temporal::RoundNearest, ARDOUR::SnapToGrid_Scaled, true);
|
||||
mce.set_trigger_start (pos);
|
||||
}
|
||||
|
||||
@@ -782,7 +782,7 @@ Pianoroll::set_trigger_start (Temporal::timepos_t const & p)
|
||||
} else {
|
||||
begin_reversible_command (_("trim region front"));
|
||||
view->midi_region()->clear_changes ();
|
||||
view->midi_region()->trim_front (view->midi_region()->position() + p);
|
||||
view->midi_region()->trim_front (view->midi_region()->source_position() + p);
|
||||
add_command (new StatefulDiffCommand (view->midi_region()));
|
||||
commit_reversible_command ();
|
||||
}
|
||||
@@ -796,7 +796,7 @@ Pianoroll::set_trigger_end (Temporal::timepos_t const & p)
|
||||
} else {
|
||||
begin_reversible_command (_("trim region end"));
|
||||
view->midi_region()->clear_changes ();
|
||||
view->midi_region()->trim_end (view->midi_region()->position() + p);
|
||||
view->midi_region()->trim_end (view->midi_region()->source_position() + p);
|
||||
add_command (new StatefulDiffCommand (view->midi_region()));
|
||||
commit_reversible_command ();
|
||||
}
|
||||
|
||||
@@ -136,6 +136,8 @@ class Pianoroll : public CueEditor
|
||||
void keyboard_paste ();
|
||||
void cut_copy (Editing::CutCopyOp);
|
||||
|
||||
PianorollMidiView* midi_view() const { return view; }
|
||||
|
||||
protected:
|
||||
void load_bindings ();
|
||||
void register_actions ();
|
||||
|
||||
Reference in New Issue
Block a user