Dragging a meter sets editor snap type to bars during drag.

This commit is contained in:
nick_m 2016-05-28 00:48:18 +10:00
parent 10228a4bc3
commit b9f70334b6
2 changed files with 9 additions and 3 deletions

View file

@ -3115,8 +3115,9 @@ TrimDrag::setup_pointer_frame_offset ()
} }
MeterMarkerDrag::MeterMarkerDrag (Editor* e, ArdourCanvas::Item* i, bool c) MeterMarkerDrag::MeterMarkerDrag (Editor* e, ArdourCanvas::Item* i, bool c)
: Drag (e, i), : Drag (e, i)
_copy (c) , _copy (c)
, _old_snap_type (e->snap_type())
, before_state (0) , before_state (0)
{ {
DEBUG_TRACE (DEBUG::Drags, "New MeterMarkerDrag\n"); DEBUG_TRACE (DEBUG::Drags, "New MeterMarkerDrag\n");
@ -3143,7 +3144,6 @@ void
MeterMarkerDrag::motion (GdkEvent* event, bool first_move) MeterMarkerDrag::motion (GdkEvent* event, bool first_move)
{ {
if (first_move) { if (first_move) {
// create a dummy marker to catch events, then hide it. // create a dummy marker to catch events, then hide it.
char name[64]; char name[64];
@ -3183,6 +3183,8 @@ MeterMarkerDrag::motion (GdkEvent* event, bool first_move)
, beat, bbt, map.frame_at_bbt (bbt), _real_section->position_lock_style()); , beat, bbt, map.frame_at_bbt (bbt), _real_section->position_lock_style());
} }
/* only snap to bars */
_editor->set_snap_to (SnapToBar);
} }
framepos_t pf = adjusted_current_frame (event); framepos_t pf = adjusted_current_frame (event);
@ -3210,6 +3212,9 @@ MeterMarkerDrag::finished (GdkEvent* event, bool movement_occurred)
return; return;
} }
/* reinstate old snap setting */
_editor->set_snap_to (_old_snap_type);
TempoMap& map (_editor->session()->tempo_map()); TempoMap& map (_editor->session()->tempo_map());
XMLNode &after = map.get_state(); XMLNode &after = map.get_state();

View file

@ -709,6 +709,7 @@ private:
ARDOUR::MeterSection* _real_section; ARDOUR::MeterSection* _real_section;
bool _copy; bool _copy;
Editing::SnapType _old_snap_type;
XMLNode* before_state; XMLNode* before_state;
}; };