single click in timefx mode should still show dialog, allow user to set parameters
This commit is contained in:
parent
03ecf6cecd
commit
ff9bb1886a
|
@ -4000,7 +4000,7 @@ MarkerDrag::motion (GdkEvent* event, bool)
|
||||||
if (move_both || (*x).move_both) {
|
if (move_both || (*x).move_both) {
|
||||||
copy_location->set_start (new_start);
|
copy_location->set_start (new_start);
|
||||||
copy_location->set_end (new_end);
|
copy_location->set_end (new_end);
|
||||||
} else if (new_start < copy_location->end()) {
|
} else if (new_start < copy_location->end()) {
|
||||||
copy_location->set_start (new_start);
|
copy_location->set_start (new_start);
|
||||||
} else if (newframe > 0) {
|
} else if (newframe > 0) {
|
||||||
//_editor->snap_to (next, RoundUpAlways, true);
|
//_editor->snap_to (next, RoundUpAlways, true);
|
||||||
|
@ -4716,31 +4716,37 @@ TimeFXDrag::motion (GdkEvent* event, bool)
|
||||||
void
|
void
|
||||||
TimeFXDrag::finished (GdkEvent* event, bool movement_occurred)
|
TimeFXDrag::finished (GdkEvent* event, bool movement_occurred)
|
||||||
{
|
{
|
||||||
if (!movement_occurred) {
|
/* this may have been a single click, no drag. We still want the dialog
|
||||||
return;
|
to show up in that case, so that the user can manually edit the
|
||||||
}
|
parameters for the timestretch.
|
||||||
|
*/
|
||||||
|
|
||||||
motion (event, false);
|
float fraction = 1.0;
|
||||||
|
|
||||||
_primary->get_time_axis_view().hide_timestretch ();
|
if (movement_occurred) {
|
||||||
|
|
||||||
framepos_t adjusted_frame_pos = adjusted_current_frame (event);
|
motion (event, false);
|
||||||
|
|
||||||
if (adjusted_frame_pos < _primary->region()->position()) {
|
_primary->get_time_axis_view().hide_timestretch ();
|
||||||
/* backwards drag of the left edge - not usable */
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
framecnt_t newlen = adjusted_frame_pos - _primary->region()->position();
|
framepos_t adjusted_frame_pos = adjusted_current_frame (event);
|
||||||
|
|
||||||
float percentage = (double) newlen / (double) _primary->region()->length();
|
if (adjusted_frame_pos < _primary->region()->position()) {
|
||||||
|
/* backwards drag of the left edge - not usable */
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
framecnt_t newlen = adjusted_frame_pos - _primary->region()->position();
|
||||||
|
|
||||||
|
fraction = (double) newlen / (double) _primary->region()->length();
|
||||||
|
|
||||||
#ifndef USE_RUBBERBAND
|
#ifndef USE_RUBBERBAND
|
||||||
// Soundtouch uses percentage / 100 instead of normal (/ 1)
|
// Soundtouch uses fraction / 100 instead of normal (/ 1)
|
||||||
if (_primary->region()->data_type() == DataType::AUDIO) {
|
if (_primary->region()->data_type() == DataType::AUDIO) {
|
||||||
percentage = (float) ((double) newlen - (double) _primary->region()->length()) / ((double) newlen) * 100.0f;
|
fraction = (float) ((double) newlen - (double) _primary->region()->length()) / ((double) newlen) * 100.0f;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
if (!_editor->get_selection().regions.empty()) {
|
if (!_editor->get_selection().regions.empty()) {
|
||||||
/* primary will already be included in the selection, and edit
|
/* primary will already be included in the selection, and edit
|
||||||
|
@ -4749,7 +4755,7 @@ TimeFXDrag::finished (GdkEvent* event, bool movement_occurred)
|
||||||
selection.
|
selection.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (_editor->time_stretch (_editor->get_selection().regions, percentage) == -1) {
|
if (_editor->time_stretch (_editor->get_selection().regions, fraction) == -1) {
|
||||||
error << _("An error occurred while executing time stretch operation") << endmsg;
|
error << _("An error occurred while executing time stretch operation") << endmsg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user