diff options
author | Carl Hetherington <carl@carlh.net> | 2012-06-13 18:01:29 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2012-06-13 18:01:29 +0000 |
commit | 57590aaca3044319428be0623d5406955b51c86d (patch) | |
tree | df6c7df8f70600bec9a6cd01e006103e22db55e4 /gtk2_ardour | |
parent | b524fe05d57e7f42bc5fd62593a11ea5c72c2046 (diff) |
Make y position of MIDI note drags slightly better.
git-svn-id: svn://localhost/ardour2/branches/3.0@12707 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/editor_drag.cc | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index ce785af188..e5eb7630c0 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -3999,7 +3999,15 @@ NoteDrag::total_dx () const int8_t NoteDrag::total_dy () const { - return ((int8_t) (grab_y() / _note_height)) - ((int8_t) (_drags->current_pointer_y() / _note_height)); + MidiStreamView* msv = _region->midi_stream_view (); + double const y = _region->midi_view()->y_position (); + /* new current note */ + uint8_t n = msv->y_to_note (_drags->current_pointer_y () - y); + /* clamp */ + n = max (msv->lowest_note(), n); + n = min (msv->highest_note(), n); + /* and work out delta */ + return n - msv->y_to_note (grab_y() - y); } void |