13
0

Slip Contents Drag: remove ContentsTrim modifier from the region boundaries

*now that you can grab "anywhere" in the region, trim edges are inferior because they are hard to hit
*modifier had to change anyway (since CTRL is used as a copy-drag on both mac and win), so that invalidates prior muscle memory
*potentially frees up modifier on the trim edge for some other purpose (anchored_trim)
This commit is contained in:
Ben Loftis 2021-06-15 09:22:58 -05:00
parent fea3fb9e71
commit 3d8bccb508
2 changed files with 17 additions and 48 deletions

View File

@ -3036,31 +3036,25 @@ TrimDrag::start_grab (GdkEvent* event, Gdk::Cursor*)
samplepos_t const pf = adjusted_current_sample (event); samplepos_t const pf = adjusted_current_sample (event);
setup_snap_delta (MusicSample(region_start, 0)); setup_snap_delta (MusicSample(region_start, 0));
if (Keyboard::modifier_state_equals (event->button.state, ArdourKeyboard::trim_contents_modifier ())) { /* These will get overridden for a point trim.*/
/* Move the contents of the region around without changing the region bounds */ if (pf < (region_start + region_length/2)) {
_operation = ContentsTrim; /* closer to front */
_preview_video = false; _operation = StartTrim;
Drag::start_grab (event, _editor->cursors()->trimmer); if (Keyboard::modifier_state_equals (event->button.state, ArdourKeyboard::trim_anchored_modifier ())) {
} else { Drag::start_grab (event, _editor->cursors()->anchored_left_side_trim);
/* These will get overridden for a point trim.*/
if (pf < (region_start + region_length/2)) {
/* closer to front */
_operation = StartTrim;
if (Keyboard::modifier_state_equals (event->button.state, ArdourKeyboard::trim_anchored_modifier ())) {
Drag::start_grab (event, _editor->cursors()->anchored_left_side_trim);
} else {
Drag::start_grab (event, _editor->cursors()->left_side_trim);
}
} else { } else {
/* closer to end */ Drag::start_grab (event, _editor->cursors()->left_side_trim);
_operation = EndTrim; }
if (Keyboard::modifier_state_equals (event->button.state, ArdourKeyboard::trim_anchored_modifier ())) { } else {
Drag::start_grab (event, _editor->cursors()->anchored_right_side_trim); /* closer to end */
} else { _operation = EndTrim;
Drag::start_grab (event, _editor->cursors()->right_side_trim); if (Keyboard::modifier_state_equals (event->button.state, ArdourKeyboard::trim_anchored_modifier ())) {
} Drag::start_grab (event, _editor->cursors()->anchored_right_side_trim);
} else {
Drag::start_grab (event, _editor->cursors()->right_side_trim);
} }
} }
/* jump trim disabled for now /* jump trim disabled for now
if (Keyboard::modifier_state_equals (event->button.state, Keyboard::trim_jump_modifier ())) { if (Keyboard::modifier_state_equals (event->button.state, Keyboard::trim_jump_modifier ())) {
_jump_position_when_done = true; _jump_position_when_done = true;
@ -3074,9 +3068,6 @@ TrimDrag::start_grab (GdkEvent* event, Gdk::Cursor*)
case EndTrim: case EndTrim:
show_verbose_cursor_duration (region_start, region_end); show_verbose_cursor_duration (region_start, region_end);
break; break;
case ContentsTrim:
show_verbose_cursor_time (_primary->region()->start ());
break;
} }
show_view_preview (_operation == StartTrim ? region_start : region_end); show_view_preview (_operation == StartTrim ? region_start : region_end);
@ -3091,7 +3082,6 @@ TrimDrag::motion (GdkEvent* event, bool first_move)
RegionView* rv = _primary; RegionView* rv = _primary;
pair<set<boost::shared_ptr<Playlist> >::iterator,bool> insert_result; pair<set<boost::shared_ptr<Playlist> >::iterator,bool> insert_result;
sampleoffset_t sample_delta = 0;
MusicSample adj_sample = adjusted_sample (_drags->current_pointer_sample () + snap_delta (event->button.state), event, true); MusicSample adj_sample = adjusted_sample (_drags->current_pointer_sample () + snap_delta (event->button.state), event, true);
samplecnt_t dt = adj_sample.sample - raw_grab_sample () + _pointer_sample_offset - snap_delta (event->button.state); samplecnt_t dt = adj_sample.sample - raw_grab_sample () + _pointer_sample_offset - snap_delta (event->button.state);
@ -3107,9 +3097,6 @@ TrimDrag::motion (GdkEvent* event, bool first_move)
case EndTrim: case EndTrim:
trim_type = "Region end trim"; trim_type = "Region end trim";
break; break;
case ContentsTrim:
trim_type = "Region content trim";
break;
default: default:
assert(0); assert(0);
break; break;
@ -3188,8 +3175,6 @@ TrimDrag::motion (GdkEvent* event, bool first_move)
if (len < -dt) dt = max(dt, -len); if (len < -dt) dt = max(dt, -len);
} }
break; break;
case ContentsTrim:
break;
} }
} }
@ -3232,15 +3217,6 @@ TrimDrag::motion (GdkEvent* event, bool first_move)
} }
break; break;
case ContentsTrim:
{
sample_delta = (last_pointer_sample() - adjusted_current_sample(event, false));
for (list<DraggingView>::const_iterator i = _views.begin(); i != _views.end(); ++i) {
i->view->move_contents (sample_delta);
}
}
break;
} }
switch (_operation) { switch (_operation) {
@ -3250,9 +3226,6 @@ TrimDrag::motion (GdkEvent* event, bool first_move)
case EndTrim: case EndTrim:
show_verbose_cursor_duration (rv->region()->position(), rv->region()->last_sample()); show_verbose_cursor_duration (rv->region()->position(), rv->region()->last_sample());
break; break;
case ContentsTrim:
show_verbose_cursor_time (rv->region()->start ());
break;
} }
show_view_preview ((_operation == StartTrim ? rv->region()->position() : rv->region()->last_sample())); show_view_preview ((_operation == StartTrim ? rv->region()->position() : rv->region()->last_sample()));
} }
@ -3379,9 +3352,6 @@ TrimDrag::setup_pointer_sample_offset ()
case EndTrim: case EndTrim:
_pointer_sample_offset = raw_grab_sample() - i->initial_end; _pointer_sample_offset = raw_grab_sample() - i->initial_end;
break; break;
case ContentsTrim:
_pointer_sample_offset = 0;
break;
} }
} }

View File

@ -771,8 +771,7 @@ class TrimDrag : public RegionDrag
public: public:
enum Operation { enum Operation {
StartTrim, StartTrim,
EndTrim, EndTrim
ContentsTrim,
}; };
TrimDrag (Editor *, ArdourCanvas::Item *, RegionView*, std::list<RegionView*> const &, bool preserve_fade_anchor = false); TrimDrag (Editor *, ArdourCanvas::Item *, RegionView*, std::list<RegionView*> const &, bool preserve_fade_anchor = false);