diff options
-rw-r--r-- | gtk2_ardour/editor.h | 1 | ||||
-rw-r--r-- | gtk2_ardour/editor_drag.cc | 21 | ||||
-rw-r--r-- | gtk2_ardour/editor_drag.h | 13 | ||||
-rw-r--r-- | gtk2_ardour/editor_mouse.cc | 15 | ||||
-rw-r--r-- | gtk2_ardour/panner_ui.cc | 4 |
5 files changed, 36 insertions, 18 deletions
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 2528f2054b..f2b21a020e 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -2241,6 +2241,7 @@ public: friend class LineDrag; friend class RubberbandSelectDrag; friend class TimeFXDrag; + friend class ScrubDrag; friend class SelectionDrag; friend class RangeMarkerBarDrag; friend class MouseZoomDrag; diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index 8c768f9009..a83f2fe4fd 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -2829,6 +2829,27 @@ TimeFXDrag::finished (GdkEvent* event, bool movement_occurred) } } +void +ScrubDrag::start_grab (GdkEvent* event, Gdk::Cursor *) +{ + Drag::start_grab (event); +} + +void +ScrubDrag::motion (GdkEvent* event, bool) +{ + _editor->scrub (); +} + +void +ScrubDrag::finished (GdkEvent* event, bool movement_occurred) +{ + if (movement_occurred && _editor->session) { + /* make sure we stop */ + _editor->session->request_transport_speed (0.0); + } +} + SelectionDrag::SelectionDrag (Editor* e, ArdourCanvas::Item* i, Operation o) : Drag (e, i), _operation (o), diff --git a/gtk2_ardour/editor_drag.h b/gtk2_ardour/editor_drag.h index 5d5a2dc7e7..c234dcb918 100644 --- a/gtk2_ardour/editor_drag.h +++ b/gtk2_ardour/editor_drag.h @@ -453,7 +453,18 @@ public: void finished (GdkEvent *, bool); }; -/** Drag in range selection mode */ +/** Scrub drag in audition mode */ +class ScrubDrag : public Drag +{ +public: + ScrubDrag (Editor *e, ArdourCanvas::Item *i) : Drag (e, i) {} + + void start_grab (GdkEvent *, Gdk::Cursor* c = 0); + void motion (GdkEvent *, bool); + void finished (GdkEvent *, bool); +}; + +/** Drag in range select(gc_owner.get()) moAutomatable */ class SelectionDrag : public Drag { public: diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index 4c55403bf9..ec8d0a81e0 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -987,13 +987,13 @@ Editor::button_press_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemTyp break; case MouseAudition: - _scrubbing = true; + _drag = new ScrubDrag (this, item); + _drag->start_grab (event); scrub_reversals = 0; scrub_reverse_distance = 0; last_scrub_x = event->button.x; scrubbing_direction = 0; track_canvas->get_window()->set_cursor (*transparent_cursor); - /* rest handled in motion & release */ break; case MouseNote: @@ -1878,17 +1878,6 @@ Editor::motion_handler (ArdourCanvas::Item* item, GdkEvent* event, bool from_aut handled = _drag->motion_handler (event, from_autoscroll); } - switch (mouse_mode) { - case MouseAudition: - if (_scrubbing) { - scrub (); - } - break; - - default: - break; - } - if (!handled) { return false; } diff --git a/gtk2_ardour/panner_ui.cc b/gtk2_ardour/panner_ui.cc index 29c991a995..7f1475fabc 100644 --- a/gtk2_ardour/panner_ui.cc +++ b/gtk2_ardour/panner_ui.cc @@ -25,7 +25,6 @@ #include <gtkmm2ext/barcontroller.h> #include "midi++/manager.h" #include "pbd/fastlog.h" -#include "pbd/stacktrace.h" #include "ardour_ui.h" #include "panner_ui.h" @@ -337,7 +336,6 @@ void PannerUI::setup_pan () { cerr << "Setup pan for " << _panner->name() << endl; - // PBD::stacktrace (cerr, 5); if (!_panner) { return; @@ -345,8 +343,6 @@ PannerUI::setup_pan () uint32_t nouts = _panner->nouts(); - cerr << "\tnouts = " << nouts << endl; - if (nouts == 0 || nouts == 1) { while (!pan_adjustments.empty()) { |