summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/editor_drag.cc11
-rw-r--r--gtk2_ardour/editor_drag.h1
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;
};