diff options
Diffstat (limited to 'gtk2_ardour/editor_drag.cc')
-rw-r--r-- | gtk2_ardour/editor_drag.cc | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index b83adf7abb..1748c39736 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -191,7 +191,7 @@ 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); + _current_pointer_frame = _editor->canvas_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); @@ -450,7 +450,7 @@ struct EditorOrderTimeAxisViewSorter { RouteTimeAxisView* ra = dynamic_cast<RouteTimeAxisView*> (a); RouteTimeAxisView* rb = dynamic_cast<RouteTimeAxisView*> (b); assert (ra && rb); - return ra->route()->order_key (EditorSort) < rb->route()->order_key (EditorSort); + return ra->route()->order_key () < rb->route()->order_key (); } }; @@ -3428,16 +3428,28 @@ RubberbandSelectDrag::motion (GdkEvent* event, bool) double x1 = _editor->sample_to_pixel (start); double x2 = _editor->sample_to_pixel (end); + const double min_dimension = 2.0; _editor->rubberband_rect->set_x0 (x1); if (_vertical_only) { /* fixed 10 pixel width */ _editor->rubberband_rect->set_x1 (x1 + 10); } else { + if (x2 < x1) { + x2 = min (x1 - min_dimension, x2); + } else { + x2 = max (x1 + min_dimension, x2); + } _editor->rubberband_rect->set_x1 (x2); } _editor->rubberband_rect->set_y0 (y1); + if (y2 < y1) { + y2 = min (y1 - min_dimension, y2); + } else { + y2 = max (y1 + min_dimension, y2); + } + _editor->rubberband_rect->set_y1 (y2); _editor->rubberband_rect->show(); |