From 3484f5f3e9344cf6252f317061d81bdaae16c95e Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 29 Jan 2015 17:51:04 -0500 Subject: [PATCH] use different drags in upper and lower half of ruler, following PRD/Igor/manual etc. --- gtk2_ardour/editor_mouse.cc | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index 7921122666..a6ef120936 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -627,17 +627,31 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT } } else { Marker* m = reinterpret_cast (item->get_data ("marker")); + + if (m) { Location* l = m->location(); if (l && l->is_auto_loop()) { - if (Config->get_loop_is_mode() && !_session->get_play_loop() ) { - /* play loop is disabled, use drag to create new Loop range or toggle loop playback */ - _drags->set (new RangeMarkerBarDrag (this, clock_ruler, RangeMarkerBarDrag::CreateLoopMarker), event); - return true; - } else { - _drags->set (new MarkerDrag (this, item, MarkerDrag::Move), event); - return true; - } + + ArdourCanvas::Duple i; + gdk_event_get_coords (event, &i.x, &i.y); + i = clock_ruler->canvas_to_item (i); + if (i.y >= ruler_divide_height) { + /* lower half: drag/set playhead */ + _drags->set (new CursorDrag (this, *playhead_cursor, false), event); + return true; + } else { + /* upper half - control loop playback */ + + if (Config->get_loop_is_mode() && !_session->get_play_loop() ) { + /* play loop is disabled, use drag to create new Loop range or toggle loop playback */ + _drags->set (new RangeMarkerBarDrag (this, clock_ruler, RangeMarkerBarDrag::CreateLoopMarker), event); + return true; + } else { + _drags->set (new MarkerDrag (this, item, MarkerDrag::Move), event); + return true; + } + } } } _drags->set (new MarkerDrag (this, item, MarkerDrag::Move), event);