part two of allow markup to be used in BoolOption items in an option editor
[ardour.git] / gtk2_ardour / editor_mouse.cc
index 9452b5e2a416d52f0f1cd4b255e22e6f59eb6331..ba0e75bb5ff7f5fbaffd8a548f9b204d9da7f1de 100644 (file)
@@ -199,6 +199,10 @@ Editor::which_grabber_cursor ()
                case MouseTimeFX:
                        c = _cursors->midi_resize;
                        break;
+                       
+               case MouseRange:
+                       c = _cursors->grabber_note;
+                       break;
 
                default:
                        break;
@@ -250,6 +254,9 @@ Editor::set_canvas_cursor ()
        switch (mouse_mode) {
        case MouseRange:
                current_canvas_cursor = _cursors->selector;
+               if (_internal_editing) {
+                       current_canvas_cursor = which_grabber_cursor();
+               }
                break;
 
        case MouseObject:
@@ -281,19 +288,21 @@ Editor::set_canvas_cursor ()
                break;
        }
 
-       switch (_join_object_range_state) {
-       case JOIN_OBJECT_RANGE_NONE:
-               break;
-       case JOIN_OBJECT_RANGE_OBJECT:
-               current_canvas_cursor = which_grabber_cursor ();
-               break;
-       case JOIN_OBJECT_RANGE_RANGE:
-               current_canvas_cursor = _cursors->selector;
-               break;
+       if (!_internal_editing) {
+               switch (_join_object_range_state) {
+               case JOIN_OBJECT_RANGE_NONE:
+                       break;
+               case JOIN_OBJECT_RANGE_OBJECT:
+                       current_canvas_cursor = which_grabber_cursor ();
+                       break;
+               case JOIN_OBJECT_RANGE_RANGE:
+                       current_canvas_cursor = _cursors->selector;
+                       break;
+               }
        }
 
        /* up-down cursor as a cue that automation can be dragged up and down when in join object/range mode */
-       if ( get_smart_mode() ) {
+       if (!_internal_editing && get_smart_mode() ) {
                double x, y;
                get_pointer_position (x, y);
                ArdourCanvas::Item* i = track_canvas->get_item_at (x, y);
@@ -842,16 +851,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
 
                case RegionViewNameHighlight:
                        if (!clicked_regionview->region()->locked()) {
-                               RegionSelection s = get_equivalent_regions (selection->regions, Properties::edit.property_id);
-                               _drags->set (new TrimDrag (this, item, clicked_regionview, s.by_layer()), event);
-                               return true;
-                       }
-                       break;
-
-               case LeftFrameHandle:
-               case RightFrameHandle:
-                       if (!internal_editing() && !clicked_regionview->region()->locked()) {
-                               RegionSelection s = get_equivalent_regions (selection->regions, Properties::edit.property_id);
+                               RegionSelection s = get_equivalent_regions (selection->regions, Properties::select.property_id);
                                _drags->set (new TrimDrag (this, item, clicked_regionview, s.by_layer()), event);
                                return true;
                        }
@@ -883,6 +883,14 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
                                return true;
                        }
                        break;
+               case StreamItem:
+                       if (internal_editing()) {
+                               if (dynamic_cast<MidiTimeAxisView*> (clicked_axisview)) {
+                                       _drags->set (new RegionCreateDrag (this, item, clicked_axisview), event);
+                               }
+                               return true;
+                       }
+                       break;
 
                default:
                        break;
@@ -917,14 +925,14 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
                        switch (item_type) {
                        case FadeInHandleItem:
                        {
-                               RegionSelection s = get_equivalent_regions (selection->regions, Properties::edit.property_id);
+                               RegionSelection s = get_equivalent_regions (selection->regions, Properties::select.property_id);
                                _drags->set (new FadeInDrag (this, item, reinterpret_cast<RegionView*> (item->get_data("regionview")), s), event, _cursors->fade_in);
                                return true;
                        }
 
                        case FadeOutHandleItem:
                        {
-                               RegionSelection s = get_equivalent_regions (selection->regions, Properties::edit.property_id);
+                               RegionSelection s = get_equivalent_regions (selection->regions, Properties::select.property_id);
                                _drags->set (new FadeOutDrag (this, item, reinterpret_cast<RegionView*> (item->get_data("regionview")), s), event, _cursors->fade_out);
                                return true;
                        }
@@ -988,7 +996,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
                        case LeftFrameHandle:
                         case RightFrameHandle:
                                if (!clicked_regionview->region()->locked()) {
-                                       RegionSelection s = get_equivalent_regions (selection->regions, Properties::edit.property_id);
+                                       RegionSelection s = get_equivalent_regions (selection->regions, Properties::select.property_id);
                                        _drags->set (new TrimDrag (this, item, clicked_regionview, s.by_layer()), event);
                                        return true;
                                }
@@ -997,7 +1005,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
                        case RegionViewName:
                        {
                                /* rename happens on edit clicks */
-                               RegionSelection s = get_equivalent_regions (selection->regions, Properties::edit.property_id);
+                               RegionSelection s = get_equivalent_regions (selection->regions, Properties::select.property_id);
                                _drags->set (new TrimDrag (this, clicked_regionview->get_name_highlight(), clicked_regionview, s.by_layer()), event);
                                return true;
                                break;
@@ -1335,14 +1343,11 @@ Editor::button_press_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemTyp
                case RangeMarkerBarItem:
                case CdMarkerBarItem:
                case TransportMarkerBarItem:
+               case StreamItem:
                        /* button press on these events never does anything to
                           change the editing mode.
                        */
                        break;
-                       
-               case StreamItem:
-                       leave_internal_edit_mode = true;
-                       break;
 
                default:
                        break;
@@ -2261,11 +2266,12 @@ Editor::motion_handler (ArdourCanvas::Item* /*item*/, GdkEvent* event, bool from
 
        JoinObjectRangeState const old = _join_object_range_state;
        update_join_object_range_location (event->motion.x, event->motion.y);
-       if (_join_object_range_state != old) {
+
+       if (!_internal_editing && _join_object_range_state != old) {
                set_canvas_cursor ();
        }
 
-       if (_over_region_trim_target) {
+       if (!_internal_editing && _over_region_trim_target) {
                set_canvas_cursor_for_region_view (event->motion.x, entered_regionview);
        }
 
@@ -2635,7 +2641,7 @@ Editor::add_region_drag (ArdourCanvas::Item* item, GdkEvent*, RegionView* region
        if (Config->get_edit_mode() == Splice) {
                _drags->add (new RegionSpliceDrag (this, item, region_view, selection->regions.by_layer()));
        } else {
-               RegionSelection s = get_equivalent_regions (selection->regions, ARDOUR::Properties::edit.property_id);
+               RegionSelection s = get_equivalent_regions (selection->regions, ARDOUR::Properties::select.property_id);
                _drags->add (new RegionMoveDrag (this, item, region_view, s.by_layer(), false, false));
        }
 
@@ -2654,7 +2660,7 @@ Editor::add_region_copy_drag (ArdourCanvas::Item* item, GdkEvent*, RegionView* r
 
        _region_motion_group->raise_to_top ();
 
-       RegionSelection s = get_equivalent_regions (selection->regions, ARDOUR::Properties::edit.property_id);
+       RegionSelection s = get_equivalent_regions (selection->regions, ARDOUR::Properties::select.property_id);
        _drags->add (new RegionMoveDrag (this, item, region_view, s.by_layer(), false, true));
 }
 
@@ -2671,7 +2677,7 @@ Editor::add_region_brush_drag (ArdourCanvas::Item* item, GdkEvent*, RegionView*
                return;
        }
 
-       RegionSelection s = get_equivalent_regions (selection->regions, ARDOUR::Properties::edit.property_id);
+       RegionSelection s = get_equivalent_regions (selection->regions, ARDOUR::Properties::select.property_id);
        _drags->add (new RegionMoveDrag (this, item, region_view, s.by_layer(), true, false));
 
        begin_reversible_command (Operations::drag_region_brush);