summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_drag.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2012-06-13 18:01:29 +0000
committerCarl Hetherington <carl@carlh.net>2012-06-13 18:01:29 +0000
commit57590aaca3044319428be0623d5406955b51c86d (patch)
treedf6c7df8f70600bec9a6cd01e006103e22db55e4 /gtk2_ardour/editor_drag.cc
parentb524fe05d57e7f42bc5fd62593a11ea5c72c2046 (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/editor_drag.cc')
-rw-r--r--gtk2_ardour/editor_drag.cc10
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