From 01c78d5620bc08e0c101415ef1f34ed856d9a41f Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Fri, 9 Jul 2010 00:57:22 +0000 Subject: Give internal edit mode its own cursor. Deselect everything when entering internal edit, and don't allow region selection during internal edit. git-svn-id: svn://localhost/ardour2/branches/3.0@7396 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/editor_mouse.cc | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'gtk2_ardour/editor_mouse.cc') diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index 68d9230028..378a8ecf32 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -177,7 +177,7 @@ Editor::which_grabber_cursor () break; case MouseObject: - c = grabber_cursor; + c = grabber_note_cursor; break; case MouseTimeFX: @@ -427,6 +427,10 @@ Editor::button_selection (ArdourCanvas::Item* /*item*/, GdkEvent* event, ItemTyp region alignment. note: not dbl-click or triple-click + + Also note that there is no region selection in internal edit mode, otherwise + for operations operating on the selection (e.g. cut) it is not obvious whether + to cut notes or regions. */ if (((mouse_mode != MouseObject) && @@ -435,8 +439,8 @@ Editor::button_selection (ArdourCanvas::Item* /*item*/, GdkEvent* event, ItemTyp (mouse_mode != MouseTimeFX || item_type != RegionItem) && (mouse_mode != MouseGain) && (mouse_mode != MouseRange)) || - - ((event->type != GDK_BUTTON_PRESS && event->type != GDK_BUTTON_RELEASE) || event->button.button > 3)) { + ((event->type != GDK_BUTTON_PRESS && event->type != GDK_BUTTON_RELEASE) || event->button.button > 3) || + internal_editing()) { return; } @@ -460,7 +464,7 @@ Editor::button_selection (ArdourCanvas::Item* /*item*/, GdkEvent* event, ItemTyp switch (item_type) { case RegionItem: - if (mouse_mode != MouseRange || internal_editing() || _join_object_range_state == JOIN_OBJECT_RANGE_OBJECT) { + if (mouse_mode != MouseRange || _join_object_range_state == JOIN_OBJECT_RANGE_OBJECT) { set_selected_regionview_from_click (press, op, true); } else if (event->type == GDK_BUTTON_PRESS) { selection->clear_tracks (); @@ -469,14 +473,13 @@ Editor::button_selection (ArdourCanvas::Item* /*item*/, GdkEvent* event, ItemTyp if (_join_object_range_state == JOIN_OBJECT_RANGE_OBJECT && !selection->regions.empty()) { clicked_selection = select_range_around_region (selection->regions.front()); } - break; case RegionViewNameHighlight: case RegionViewName: case LeftFrameHandle: case RightFrameHandle: - if (mouse_mode != MouseRange || internal_editing() || _join_object_range_state == JOIN_OBJECT_RANGE_OBJECT) { + if (mouse_mode != MouseRange || _join_object_range_state == JOIN_OBJECT_RANGE_OBJECT) { set_selected_regionview_from_click (press, op, true); } else if (event->type == GDK_BUTTON_PRESS) { set_selected_track_as_side_effect (); @@ -2662,9 +2665,10 @@ Editor::set_internal_edit (bool yn) } } - for (TrackSelection::iterator i = selection->tracks.begin(); i != selection->tracks.end(); ++i) { - (*i)->hide_selection (); - } + /* deselect everything to avoid confusion when e.g. we can't now cut a previously selected + region because cut means "cut note" rather than "cut region". + */ + selection->clear (); start_step_editing (); set_canvas_cursor (); -- cgit v1.2.3