summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_drag.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/editor_drag.cc')
-rw-r--r--gtk2_ardour/editor_drag.cc16
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();