X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_mouse.cc;h=653fdc320497e915592b8e39656f7a26396dc47e;hb=ee76685f8d3cd04ffa5905def8f760aeda8faa10;hp=5c7f03ec37cc5ac39b238a5fd0ac2eba32907c12;hpb=f237b2e23b012e8dc00bd03a575267cf603087f4;p=ardour.git diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index 5c7f03ec37..653fdc3204 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -1575,31 +1575,16 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_ break; case RegionViewNameHighlight: - if (is_drawable() && mouse_mode == MouseObject && !internal_editing()) { + if (is_drawable() && mouse_mode == MouseObject && !internal_editing() && entered_regionview) { set_canvas_cursor_for_region_view (event->crossing.x, entered_regionview); _over_region_trim_target = true; } break; case LeftFrameHandle: - if (is_drawable() && mouse_mode == MouseObject && !internal_editing()) { - if (entered_regionview) { - Trimmable::CanTrim ct = entered_regionview->region()->can_trim(); - if ((ct & Trimmable::EndTrimEarlier) || (ct & Trimmable::EndTrimLater)) { - set_canvas_cursor (left_side_trim_cursor); - } - } - } - break; - case RightFrameHandle: - if (is_drawable() && mouse_mode == MouseObject && !internal_editing()) { - if (entered_regionview) { - Trimmable::CanTrim ct = entered_regionview->region()->can_trim(); - if ((ct & Trimmable::FrontTrimEarlier) || (ct & Trimmable::FrontTrimLater)) { - set_canvas_cursor (right_side_trim_cursor); - } - } + if (is_drawable() && mouse_mode == MouseObject && !internal_editing() && entered_regionview) { + set_canvas_cursor_for_region_view (event->crossing.x, entered_regionview); } break; @@ -2728,11 +2713,21 @@ Editor::set_canvas_cursor_for_region_view (double x, RegionView* rv) double x1, x2, y1, y2; g->get_bounds (x1, y1, x2, y2); + /* Halfway across the region */ double const h = (x1 + x2) / 2; - if (x1 < x && x <= h) { - set_canvas_cursor (left_side_trim_cursor); - } else if (h < x && x <= x2) { - set_canvas_cursor (right_side_trim_cursor); + Trimmable::CanTrim ct = rv->region()->can_trim (); + if (x <= h) { + if (ct & Trimmable::FrontTrimEarlier) { + set_canvas_cursor (left_side_trim_cursor); + } else { + set_canvas_cursor (left_side_trim_right_only_cursor); + } + } else { + if (ct & Trimmable::EndTrimLater) { + set_canvas_cursor (right_side_trim_cursor); + } else { + set_canvas_cursor (right_side_trim_left_only_cursor); + } } }