X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk2_ardour%2Feditor_drag.cc;h=cff5a233e33c11cc189f890421d1bd2677035e36;hb=5cf4a32da9fa3161f1e35b3a0e07c0056b682e7b;hp=f1809ec2bb676ce84148e884e365860ffd1f4590;hpb=36c233fe6ce570ce85224626ce7aba4a2607537f;p=ardour.git diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index f1809ec2bb..cff5a233e3 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -872,7 +872,15 @@ RegionMoveDrag::finished (GdkEvent* ev, bool movement_occurred) RegionMotionDrag::finished (ev, movement_occurred); if (!movement_occurred) { + /* just a click */ + + if (was_double_click() && !_views.empty()) { + DraggingView dv = _views.front(); + dv.view->show_region_editor (); + + } + return; } @@ -1498,7 +1506,7 @@ RegionCreateDrag::motion (GdkEvent* event, bool first_move) place snapped notes at the start of the region. */ - framecnt_t const len = (framecnt_t) fabs (f - grab_frame () - 1); + framecnt_t const len = (framecnt_t) fabs ((double)(f - grab_frame () - 1)); _region->set_length (len < 1 ? 1 : len); } } @@ -2146,6 +2154,10 @@ MeterMarkerDrag::setup_pointer_frame_offset () void MeterMarkerDrag::motion (GdkEvent* event, bool first_move) { + if (!_marker->meter().movable()) { + return; + } + if (first_move) { // create a dummy marker for visual representation of moving the @@ -2191,6 +2203,13 @@ void MeterMarkerDrag::finished (GdkEvent* event, bool movement_occurred) { if (!movement_occurred) { + if (was_double_click()) { + _editor->edit_meter_marker (*_marker); + } + return; + } + + if (!_marker->meter().movable()) { return; } @@ -2266,6 +2285,10 @@ TempoMarkerDrag::setup_pointer_frame_offset () void TempoMarkerDrag::motion (GdkEvent* event, bool first_move) { + if (!_marker->tempo().movable()) { + return; + } + if (first_move) { // create a dummy marker for visual representation of moving the @@ -2310,6 +2333,13 @@ void TempoMarkerDrag::finished (GdkEvent* event, bool movement_occurred) { if (!movement_occurred) { + if (was_double_click()) { + _editor->edit_tempo_marker (*_marker); + } + return; + } + + if (!_marker->tempo().movable()) { return; } @@ -3001,7 +3031,8 @@ MarkerDrag::finished (GdkEvent* event, bool movement_occurred) if (!movement_occurred) { if (was_double_click()) { - cerr << "End of marker double click\n"; + _editor->rename_marker (_marker); + return; } /* just a click, do nothing but finish @@ -3287,10 +3318,24 @@ LineDrag::motion (GdkEvent* event, bool) } void -LineDrag::finished (GdkEvent* event, bool) +LineDrag::finished (GdkEvent* event, bool movement_occured) { - motion (event, false); - _line->end_drag (false, 0); + if (movement_occured) { + motion (event, false); + _line->end_drag (false, 0); + } else { + /* add a new control point on the line */ + + AutomationTimeAxisView* atv; + + _line->end_drag (false, 0); + + if ((atv = dynamic_cast(_editor->clicked_axisview)) != 0) { + framepos_t where = _editor->event_frame (event, 0, 0); + atv->add_automation_event (event, where, event->button.y, false); + } + } + _editor->session()->commit_reversible_command (); } @@ -4128,10 +4173,24 @@ RangeMarkerBarDrag::finished (GdkEvent* event, bool movement_occurred) _editor->new_transport_marker_context_menu (&event->button, _item); break; } + } else { + /* just a click, no pointer movement. remember that context menu stuff was handled elsewhere */ - if (Keyboard::no_modifier_keys_pressed (&event->button) && _operation != CreateCDMarker) { + if (_operation == CreateTransportMarker) { + + /* didn't drag, so just locate */ + + _editor->session()->request_locate (grab_frame(), _editor->session()->transport_rolling()); + + } else if (_operation == CreateCDMarker) { + + /* didn't drag, but mark is already created so do + * nothing */ + + } else { /* operation == CreateRangeMarker */ + framepos_t start; framepos_t end; @@ -4369,7 +4428,7 @@ NoteDrag::motion (GdkEvent *, bool) uint8_t new_note = min (max (_primary->note()->note() + note_delta, 0), 127); snprintf (buf, sizeof (buf), "%s (%d)", Evoral::midi_note_name (new_note).c_str(), - (int) floor (new_note)); + (int) floor ((double)new_note)); show_verbose_cursor_text (buf); } @@ -4873,7 +4932,7 @@ NoteCreateDrag::finished (GdkEvent*, bool had_movement) } framepos_t const start = min (_note[0], _note[1]); - framecnt_t length = (framecnt_t) fabs (_note[0] - _note[1]); + framecnt_t length = (framecnt_t) fabs ((double)(_note[0] - _note[1])); framecnt_t const g = grid_frames (start); double const one_tick = 1 / Timecode::BBT_Time::ticks_per_beat;