mirror of
https://github.com/cookiengineer/audacity
synced 2025-11-23 17:30:17 +01:00
Eliminate some uses of ClipMoveState::capturedClip
This commit is contained in:
@@ -479,6 +479,23 @@ void ClipMoveState::Init(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const TrackInterval *ClipMoveState::CapturedInterval() const
|
||||||
|
{
|
||||||
|
auto pTrack = mCapturedTrack.get();
|
||||||
|
if ( pTrack ) {
|
||||||
|
auto iter = shifters.find( pTrack );
|
||||||
|
if ( iter != shifters.end() ) {
|
||||||
|
auto &pShifter = iter->second;
|
||||||
|
if ( pShifter ) {
|
||||||
|
auto &intervals = pShifter->MovingIntervals();
|
||||||
|
if ( !intervals.empty() )
|
||||||
|
return &intervals[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
double ClipMoveState::DoSlideHorizontal(
|
double ClipMoveState::DoSlideHorizontal(
|
||||||
double desiredSlideAmount, TrackList &trackList )
|
double desiredSlideAmount, TrackList &trackList )
|
||||||
{
|
{
|
||||||
@@ -629,10 +646,10 @@ UIHandle::Result TimeShiftHandle::Click
|
|||||||
kPixelTolerance);
|
kPixelTolerance);
|
||||||
mClipMoveState.snapLeft = -1;
|
mClipMoveState.snapLeft = -1;
|
||||||
mClipMoveState.snapRight = -1;
|
mClipMoveState.snapRight = -1;
|
||||||
mSnapPreferRightEdge =
|
auto pInterval = mClipMoveState.CapturedInterval();
|
||||||
mClipMoveState.capturedClip &&
|
mSnapPreferRightEdge = pInterval &&
|
||||||
(fabs(clickTime - mClipMoveState.capturedClip->GetEndTime()) <
|
(fabs(clickTime - pInterval->End()) <
|
||||||
fabs(clickTime - mClipMoveState.capturedClip->GetStartTime()));
|
fabs(clickTime - pInterval->Start()));
|
||||||
|
|
||||||
return RefreshNone;
|
return RefreshNone;
|
||||||
}
|
}
|
||||||
@@ -661,11 +678,10 @@ namespace {
|
|||||||
|
|
||||||
// Adjust desiredSlideAmount using SnapManager
|
// Adjust desiredSlideAmount using SnapManager
|
||||||
if (pSnapManager) {
|
if (pSnapManager) {
|
||||||
if (state.capturedClip) {
|
auto pInterval = state.CapturedInterval();
|
||||||
clipLeft = state.capturedClip->GetStartTime()
|
if (pInterval) {
|
||||||
+ desiredSlideAmount;
|
clipLeft = pInterval->Start() + desiredSlideAmount;
|
||||||
clipRight = state.capturedClip->GetEndTime()
|
clipRight = pInterval->End() + desiredSlideAmount;
|
||||||
+ desiredSlideAmount;
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
clipLeft = capturedTrack.GetStartTime() + desiredSlideAmount;
|
clipLeft = capturedTrack.GetStartTime() + desiredSlideAmount;
|
||||||
|
|||||||
@@ -141,6 +141,10 @@ struct ClipMoveState {
|
|||||||
const ViewInfo &viewInfo,
|
const ViewInfo &viewInfo,
|
||||||
TrackList &trackList, bool syncLocked );
|
TrackList &trackList, bool syncLocked );
|
||||||
|
|
||||||
|
//! Return pointer to the first fixed interval of the captured track, if there is one
|
||||||
|
/*! Pointer may be invalidated by operations on the associated TrackShifter */
|
||||||
|
const TrackInterval *CapturedInterval() const;
|
||||||
|
|
||||||
/*! @return actual slide amount, maybe adjusted toward zero from desired */
|
/*! @return actual slide amount, maybe adjusted toward zero from desired */
|
||||||
double DoSlideHorizontal( double desiredSlideAmount, TrackList &trackList );
|
double DoSlideHorizontal( double desiredSlideAmount, TrackList &trackList );
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user