mirror of
https://github.com/cookiengineer/audacity
synced 2025-10-16 15:41:11 +02:00
Enable snapping to other tracks, time-shifting with Shift key down...
...It seems that was inadvertently disabled when note tracks were first added. Also remove unnecessary #ifdef branch.
This commit is contained in:
@@ -578,9 +578,8 @@ UIHandle::Result TimeShiftHandle::Drag
|
|||||||
desiredSlideAmount =
|
desiredSlideAmount =
|
||||||
viewInfo.PositionToTime(event.m_x) -
|
viewInfo.PositionToTime(event.m_x) -
|
||||||
viewInfo.PositionToTime(mMouseClickX);
|
viewInfo.PositionToTime(mMouseClickX);
|
||||||
bool trySnap = false;
|
|
||||||
double clipLeft = 0, clipRight = 0;
|
double clipLeft = 0, clipRight = 0;
|
||||||
#ifdef USE_MIDI
|
|
||||||
if (pTrack->GetKind() == Track::Wave) {
|
if (pTrack->GetKind() == Track::Wave) {
|
||||||
WaveTrack *const mtw = static_cast<WaveTrack*>(pTrack.get());
|
WaveTrack *const mtw = static_cast<WaveTrack*>(pTrack.get());
|
||||||
const double rate = mtw->GetRate();
|
const double rate = mtw->GetRate();
|
||||||
@@ -589,8 +588,7 @@ UIHandle::Result TimeShiftHandle::Drag
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Adjust desiredSlideAmount using SnapManager
|
// Adjust desiredSlideAmount using SnapManager
|
||||||
if (mSnapManager.get() && mClipMoveState.capturedClipArray.size()) {
|
if (mSnapManager.get()) {
|
||||||
trySnap = true;
|
|
||||||
if (mClipMoveState.capturedClip) {
|
if (mClipMoveState.capturedClip) {
|
||||||
clipLeft = mClipMoveState.capturedClip->GetStartTime()
|
clipLeft = mClipMoveState.capturedClip->GetStartTime()
|
||||||
+ desiredSlideAmount;
|
+ desiredSlideAmount;
|
||||||
@@ -601,26 +599,7 @@ UIHandle::Result TimeShiftHandle::Drag
|
|||||||
clipLeft = mCapturedTrack->GetStartTime() + desiredSlideAmount;
|
clipLeft = mCapturedTrack->GetStartTime() + desiredSlideAmount;
|
||||||
clipRight = mCapturedTrack->GetEndTime() + desiredSlideAmount;
|
clipRight = mCapturedTrack->GetEndTime() + desiredSlideAmount;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
trySnap = true;
|
|
||||||
if (pTrack->GetKind() == Track::Wave) {
|
|
||||||
auto wt = static_cast<const WaveTrack *>(pTrack.get());
|
|
||||||
const double rate = wt->GetRate();
|
|
||||||
// set it to a sample point
|
|
||||||
desiredSlideAmount = rint(desiredSlideAmount * rate) / rate;
|
|
||||||
if (mSnapManager && mClipMoveState.capturedClip) {
|
|
||||||
clipLeft = mClipMoveState.capturedClip->GetStartTime()
|
|
||||||
+ desiredSlideAmount;
|
|
||||||
clipRight = mClipMoveState.capturedClip->GetEndTime()
|
|
||||||
+ desiredSlideAmount;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
if (trySnap)
|
|
||||||
{
|
|
||||||
auto results =
|
auto results =
|
||||||
mSnapManager->Snap(mCapturedTrack.get(), clipLeft, false);
|
mSnapManager->Snap(mCapturedTrack.get(), clipLeft, false);
|
||||||
auto newClipLeft = results.outTime;
|
auto newClipLeft = results.outTime;
|
||||||
|
Reference in New Issue
Block a user