diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index cdf457f5a3..8ad9630b0f 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -885,7 +885,18 @@ Editor::set_entered_regionview (RegionView* rv) if (entered_regionview != 0) { entered_regionview->entered (internal_editing ()); - } + + if (mouse_mode == MouseCut) { + Gdk::Cursor* cursor = which_mode_cursor (); + set_canvas_cursor (cursor); + } + + } else { + if (mouse_mode == MouseCut) { + Gdk::Cursor* cursor = which_mode_cursor (); + set_canvas_cursor (cursor); + } + } if (!_all_region_actions_sensitized && _last_region_menu_was_main) { /* This RegionView entry might have changed what region actions @@ -4839,12 +4850,12 @@ Editor::get_regions_from_selection_and_mouse (framepos_t pos) { RegionSelection regions; - regions = selection->regions; - - if (entered_regionview ) { - regions.add (entered_regionview); + if (selection->selected (entered_regionview) ) { + regions = selection->regions; } - + + regions.add (entered_regionview); + // Greg Zharun: Waves Tracks PRD does not say this. // So let's skip this. //if ( regions.empty() ) { diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc index 2afbc2220e..a883d0b8b8 100644 --- a/gtk2_ardour/editor_canvas.cc +++ b/gtk2_ardour/editor_canvas.cc @@ -1223,9 +1223,13 @@ Editor::which_mode_cursor () const break; case MouseCut: - mode_cursor = _cursors->scissors; - break; - + if (entered_regionview) { + mode_cursor = _cursors->scissors; + } else { + mode_cursor = which_grabber_cursor(); + } + break; + case MouseObject: /* don't use mode cursor, pick a grabber cursor based on the item */ break; diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index 6762dc71cf..12038386ae 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -5752,6 +5752,9 @@ RegionCutDrag::finished (GdkEvent*, bool) return; } + // clear selection before cutting + _editor->get_selection().clear_regions(); + _editor->split_regions_at (pos, rs); } diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index a6ef120936..745b987c53 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -926,16 +926,31 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT case RegionItem: case FadeInHandleItem: case FadeOutHandleItem: - case LeftFrameHandle: - case RightFrameHandle: - case FeatureLineItem: case RegionViewNameHighlight: case RegionViewName: - case StreamItem: - case AutomationTrackItem: - _drags->set (new RegionCutDrag (this, item, canvas_event_sample (event)), event, current_canvas_cursor); + if (entered_regionview) { + _drags->set (new RegionCutDrag (this, item, canvas_event_sample (event)), event, current_canvas_cursor); + } return true; break; + case StreamItem: + + if (!Keyboard::modifier_state_contains (event->button.state, Keyboard::PrimaryModifier) && + !Keyboard::modifier_state_contains (event->button.state, Keyboard::TertiaryModifier) ) { + + selection->clear_regions(); + selection->clear_time (); + selection->clear_points (); + selection->clear_lines (); + } + + _drags->set (new EditorRubberbandSelectDrag (this, item), event); + + break; + case LeftFrameHandle: + case RightFrameHandle: + case FeatureLineItem: + case AutomationTrackItem: default: break; } @@ -1898,7 +1913,7 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_ case SelectionItem: break; - + default: break; } @@ -1962,9 +1977,9 @@ Editor::leave_handler (ArdourCanvas::Item* item, GdkEvent*, ItemType item_type) if (rect) { rect->set_fill_color (ARDOUR_UI::config()->get_canvasvar_InactiveFadeHandle()); } - } - break; - + } + break; + case AutomationTrackItem: break;