diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index ec741c07b1..81f97ae014 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -4463,6 +4463,7 @@ RangeMarkerBarDrag::start_grab (GdkEvent* event, Gdk::Cursor *) } switch (_operation) { + case CreateSkipMarker: case CreateRangeMarker: case CreateTransportMarker: case CreateCDMarker: @@ -4489,6 +4490,9 @@ RangeMarkerBarDrag::motion (GdkEvent* event, bool first_move) ArdourCanvas::Rectangle *crect; switch (_operation) { + case CreateSkipMarker: + crect = _editor->range_bar_drag_rect; + break; case CreateRangeMarker: crect = _editor->range_bar_drag_rect; break; @@ -4506,7 +4510,7 @@ RangeMarkerBarDrag::motion (GdkEvent* event, bool first_move) framepos_t const pf = adjusted_current_frame (event); - if (_operation == CreateRangeMarker || _operation == CreateTransportMarker || _operation == CreateCDMarker) { + if (_operation == CreateSkipMarker || _operation == CreateRangeMarker || _operation == CreateTransportMarker || _operation == CreateCDMarker) { framepos_t grab = grab_frame (); _editor->snap_to (grab); @@ -4562,17 +4566,24 @@ RangeMarkerBarDrag::finished (GdkEvent* event, bool movement_occurred) _drag_rect->hide(); switch (_operation) { + case CreateSkipMarker: case CreateRangeMarker: case CreateCDMarker: { - _editor->begin_reversible_command (_("new range marker")); XMLNode &before = _editor->session()->locations()->get_state(); - _editor->session()->locations()->next_available_name(rangename,"unnamed"); - if (_operation == CreateCDMarker) { + if (_operation == CreateSkipMarker) { + _editor->begin_reversible_command (_("new skip marker")); + _editor->session()->locations()->next_available_name(rangename,_("skip")); + flags = Location::IsRangeMarker | Location::IsSkip; + _editor->range_bar_drag_rect->hide(); + } else if (_operation == CreateCDMarker) { + _editor->session()->locations()->next_available_name(rangename, _("CD")); + _editor->begin_reversible_command (_("new CD marker")); flags = Location::IsRangeMarker | Location::IsCDMarker; _editor->cd_marker_bar_drag_rect->hide(); - } - else { + } else { + _editor->begin_reversible_command (_("new skip marker")); + _editor->session()->locations()->next_available_name(rangename, _("unnamed")); flags = Location::IsRangeMarker; _editor->range_bar_drag_rect->hide(); } @@ -4608,7 +4619,7 @@ RangeMarkerBarDrag::finished (GdkEvent* event, bool movement_occurred) /* didn't drag, but mark is already created so do * nothing */ - } else { /* operation == CreateRangeMarker */ + } else { /* operation == CreateRangeMarker || CreateSkipMarker */ framepos_t start; diff --git a/gtk2_ardour/editor_drag.h b/gtk2_ardour/editor_drag.h index 378162621e..3c1eef70f6 100644 --- a/gtk2_ardour/editor_drag.h +++ b/gtk2_ardour/editor_drag.h @@ -991,6 +991,7 @@ class RangeMarkerBarDrag : public Drag { public: enum Operation { + CreateSkipMarker, CreateRangeMarker, CreateTransportMarker, CreateCDMarker