mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-30 17:03:06 +01:00
Obey snap setting for MIDI stuff.
git-svn-id: svn://localhost/ardour2/trunk@2238 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
604a0079ce
commit
a5abcd306b
2 changed files with 19 additions and 3 deletions
|
|
@ -190,9 +190,12 @@ MidiRegionView::canvas_event(GdkEvent* ev)
|
|||
drag_start_x = event_x;
|
||||
drag_start_y = event_y;
|
||||
|
||||
drag_rect = new ArdourCanvas::SimpleRect(*group);
|
||||
drag_rect->property_x1() = event_x;
|
||||
nframes_t event_frame = midi_view()->editor.pixel_to_frame(event_x);
|
||||
midi_view()->editor.snap_to(event_frame);
|
||||
|
||||
drag_rect = new ArdourCanvas::SimpleRect(*group);
|
||||
drag_rect->property_x1() = midi_view()->editor.frame_to_pixel(event_frame);
|
||||
|
||||
drag_rect->property_y1() = midi_stream_view()->note_to_y(midi_stream_view()->y_to_note(event_y));
|
||||
drag_rect->property_x2() = event_x;
|
||||
drag_rect->property_y2() = drag_rect->property_y1() + floor(midi_stream_view()->note_height());
|
||||
|
|
@ -217,6 +220,12 @@ MidiRegionView::canvas_event(GdkEvent* ev)
|
|||
event_y = t_y;
|
||||
}
|
||||
|
||||
if (_state == AddDragging) {
|
||||
nframes_t event_frame = midi_view()->editor.pixel_to_frame(event_x);
|
||||
midi_view()->editor.snap_to(event_frame);
|
||||
event_x = midi_view()->editor.frame_to_pixel(event_frame);
|
||||
}
|
||||
|
||||
if (drag_rect)
|
||||
drag_rect->property_x2() = event_x;
|
||||
|
||||
|
|
@ -240,8 +249,12 @@ MidiRegionView::canvas_event(GdkEvent* ev)
|
|||
group->ungrab(ev->button.time);
|
||||
switch (_state) {
|
||||
case Pressed: // Clicked
|
||||
if (ev->button.button == 3)
|
||||
if (ev->button.button == 3) {
|
||||
nframes_t event_frame = midi_view()->editor.pixel_to_frame(event_x);
|
||||
midi_view()->editor.snap_to(event_frame);
|
||||
event_x = midi_view()->editor.frame_to_pixel(event_frame);
|
||||
create_note_at(event_x, event_y, _default_note_length);
|
||||
}
|
||||
_state = None;
|
||||
return true;
|
||||
case SelectDragging: // Select drag done
|
||||
|
|
|
|||
|
|
@ -112,6 +112,9 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway
|
|||
* @param t Snap threshold in `units'.
|
||||
*/
|
||||
virtual void set_snap_threshold (double t) = 0;
|
||||
|
||||
/** Snap a value according to the current snap setting. */
|
||||
virtual void snap_to (nframes_t& first, int32_t direction = 0, bool for_mark = false) = 0;
|
||||
|
||||
/** Undo some transactions.
|
||||
* @param n Number of transactions to undo.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue