summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/edit_note_dialog.cc13
1 files changed, 8 insertions, 5 deletions
diff --git a/gtk2_ardour/edit_note_dialog.cc b/gtk2_ardour/edit_note_dialog.cc
index 08829d093e..997713ae2d 100644
--- a/gtk2_ardour/edit_note_dialog.cc
+++ b/gtk2_ardour/edit_note_dialog.cc
@@ -104,7 +104,10 @@ EditNoteDialog::EditNoteDialog (MidiRegionView* rv, set<NoteBase*> n)
_length_clock.set_session (_region_view->get_time_axis_view().session ());
_length_clock.set_mode (AudioClock::BBT);
- _length_clock.set (_region_view->region_relative_time_converter().to ((*_events.begin())->note()->length ()), true);
+ _length_clock.set (
+ _region_view->region_relative_time_converter().to ((*_events.begin())->note()->end_time ()) + _region_view->region()->position(),
+ true,
+ _region_view->region_relative_time_converter().to ((*_events.begin())->note()->time ()) + _region_view->region()->position());
/* Set up `set all notes...' buttons' sensitivity */
@@ -194,8 +197,8 @@ EditNoteDialog::done (int r)
}
}
- Evoral::Beats const t = _region_view->source_relative_time_converter().from
- (_time_clock.current_time() - (_region_view->region()->position() - _region_view->region()->start()));
+ framecnt_t const region_samples = _time_clock.current_time() - (_region_view->region()->position() - _region_view->region()->start());
+ Evoral::Beats const t = _region_view->source_relative_time_converter().from (region_samples);
if (!_time_all.get_sensitive() || _time_all.get_active ()) {
for (set<NoteBase*>::iterator i = _events.begin(); i != _events.end(); ++i) {
@@ -206,10 +209,10 @@ EditNoteDialog::done (int r)
}
}
- Evoral::Beats const d = _region_view->region_relative_time_converter().from (_length_clock.current_duration ());
-
if (!_length_all.get_sensitive() || _length_all.get_active ()) {
for (set<NoteBase*>::iterator i = _events.begin(); i != _events.end(); ++i) {
+ framepos_t const note_end_sample = region_samples + _length_clock.current_duration (_time_clock.current_time());
+ Evoral::Beats const d = _region_view->source_relative_time_converter().from (note_end_sample) - (*i)->note()->time();
if (d != (*i)->note()->length()) {
_region_view->change_note_length (*i, d);
had_change = true;