diff options
-rw-r--r-- | gtk2_ardour/editor_drag.cc | 11 | ||||
-rw-r--r-- | gtk2_ardour/editor_drag.h | 1 |
2 files changed, 9 insertions, 3 deletions
diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index 69b7060884..e9b3ad15a6 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -3115,8 +3115,9 @@ TrimDrag::setup_pointer_frame_offset () } MeterMarkerDrag::MeterMarkerDrag (Editor* e, ArdourCanvas::Item* i, bool c) - : Drag (e, i), - _copy (c) + : Drag (e, i) + , _copy (c) + , _old_snap_type (e->snap_type()) , before_state (0) { DEBUG_TRACE (DEBUG::Drags, "New MeterMarkerDrag\n"); @@ -3143,7 +3144,6 @@ void MeterMarkerDrag::motion (GdkEvent* event, bool first_move) { if (first_move) { - // create a dummy marker to catch events, then hide it. 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()); } + /* only snap to bars */ + _editor->set_snap_to (SnapToBar); } framepos_t pf = adjusted_current_frame (event); @@ -3210,6 +3212,9 @@ MeterMarkerDrag::finished (GdkEvent* event, bool movement_occurred) return; } + /* reinstate old snap setting */ + _editor->set_snap_to (_old_snap_type); + TempoMap& map (_editor->session()->tempo_map()); XMLNode &after = map.get_state(); diff --git a/gtk2_ardour/editor_drag.h b/gtk2_ardour/editor_drag.h index abec31a00b..6ac8285fb4 100644 --- a/gtk2_ardour/editor_drag.h +++ b/gtk2_ardour/editor_drag.h @@ -709,6 +709,7 @@ private: ARDOUR::MeterSection* _real_section; bool _copy; + Editing::SnapType _old_snap_type; XMLNode* before_state; }; |