diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2014-07-02 16:23:46 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2014-07-02 16:23:46 -0400 |
commit | 3c2c048f406703a4baae3f2b660dddaeee39faeb (patch) | |
tree | be74d1340f0dcb3b89b96ae9f80b7e1078753db5 | |
parent | 3dbf37eab7f307e562edce947162317bc4463249 (diff) |
reinstate same logic, slightly differently implementedm, for choosing range/object mode when pointer is in smart mode and in a track but not in a region
-rw-r--r-- | gtk2_ardour/editor_mouse.cc | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index fffb67c46d..75c4fb57cf 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -2579,7 +2579,6 @@ Editor::update_join_object_range_location (double y) _join_object_range_state = JOIN_OBJECT_RANGE_RANGE; } - if (entered_regionview) { ArdourCanvas::Duple const item_space = entered_regionview->get_canvas_group()->canvas_to_item (ArdourCanvas::Duple (0, y)); @@ -2596,17 +2595,32 @@ Editor::update_join_object_range_location (double y) RouteTimeAxisView* entered_route_view = dynamic_cast<RouteTimeAxisView*> (entered_track); if (entered_route_view) { - /* track/bus ... but not in a region ... use range mode */ - _join_object_range_state = JOIN_OBJECT_RANGE_RANGE; - if (_join_object_range_state != old) { - set_canvas_cursor (which_track_cursor ()); + + double cx = 0; + double cy = y; + + entered_route_view->canvas_display()->canvas_to_item (cx, cy); + + double track_height = entered_route_view->view()->child_height(); + if (Config->get_show_name_highlight()) { + track_height -= TimeAxisViewItem::NAME_HIGHLIGHT_SIZE; + } + double const c = cy / track_height; + + + if (c <= 0.5) { + _join_object_range_state = JOIN_OBJECT_RANGE_RANGE; + } else { + _join_object_range_state = JOIN_OBJECT_RANGE_OBJECT; } + } else { /* Other kinds of tracks use object mode */ _join_object_range_state = JOIN_OBJECT_RANGE_OBJECT; - if (_join_object_range_state != old) { - set_canvas_cursor (which_track_cursor ()); - } + } + + if (_join_object_range_state != old) { + set_canvas_cursor (which_track_cursor ()); } } } |