summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-04-17 15:29:03 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2013-04-17 15:29:03 -0400
commitfce17338083a9c2c4e250bd8189c7f767148aca5 (patch)
tree2c7634fd972b6a378da7b59ebef3f44487bfd38f
parent3737f346eeabb32de828172c851933c698bef5a6 (diff)
fix playhead dragging from rulers
-rw-r--r--gtk2_ardour/editor_drag.cc18
-rw-r--r--gtk2_ardour/editor_drag.h1
-rw-r--r--gtk2_ardour/editor_rulers.cc2
3 files changed, 20 insertions, 1 deletions
diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc
index 98d251f762..ea952e043e 100644
--- a/gtk2_ardour/editor_drag.cc
+++ b/gtk2_ardour/editor_drag.cc
@@ -179,6 +179,24 @@ DragManager::motion_handler (GdkEvent* e, bool from_autoscroll)
}
bool
+DragManager::window_motion_handler (GdkEvent* e, bool from_autoscroll)
+{
+ bool r = false;
+
+ _current_pointer_frame = _editor->window_event_frame (e, &_current_pointer_x, &_current_pointer_y);
+
+ for (list<Drag*>::iterator i = _drags.begin(); i != _drags.end(); ++i) {
+ bool const t = (*i)->motion_handler (e, from_autoscroll);
+ if (t) {
+ r = true;
+ }
+
+ }
+
+ return r;
+}
+
+bool
DragManager::have_item (ArdourCanvas::Item* i) const
{
list<Drag*>::const_iterator j = _drags.begin ();
diff --git a/gtk2_ardour/editor_drag.h b/gtk2_ardour/editor_drag.h
index 7c9b3538e9..4497cd025d 100644
--- a/gtk2_ardour/editor_drag.h
+++ b/gtk2_ardour/editor_drag.h
@@ -54,6 +54,7 @@ public:
~DragManager ();
bool motion_handler (GdkEvent *, bool);
+ bool window_motion_handler (GdkEvent *, bool);
void abort ();
void add (Drag *);
diff --git a/gtk2_ardour/editor_rulers.cc b/gtk2_ardour/editor_rulers.cc
index 477dd23f69..0566bca2da 100644
--- a/gtk2_ardour/editor_rulers.cc
+++ b/gtk2_ardour/editor_rulers.cc
@@ -314,7 +314,7 @@ Editor::ruler_mouse_motion (GdkEventMotion* ev)
}
if (_drags->active ()) {
- _drags->motion_handler (reinterpret_cast<GdkEvent*> (ev), false);
+ _drags->window_motion_handler (reinterpret_cast<GdkEvent*> (ev), false);
}
return true;