diff --git a/src/widgets/Ruler.cpp b/src/widgets/Ruler.cpp index 5b737c2a9..7b6ac4c4b 100644 --- a/src/widgets/Ruler.cpp +++ b/src/widgets/Ruler.cpp @@ -1803,17 +1803,12 @@ void AdornedRulerPanel::OnSize(wxSizeEvent & WXUNUSED(evt)) double AdornedRulerPanel::Pos2Time(int p) { - return (p-mLeftOffset) / mViewInfo->zoom + mViewInfo->h; + return mViewInfo->PositionToTime(p, mLeftOffset); } int AdornedRulerPanel::Time2Pos(double t) { - return mLeftOffset + Seconds2Pixels(t-mViewInfo->h); -} - -int AdornedRulerPanel::Seconds2Pixels(double t) -{ - return (int)(t * mViewInfo->zoom + 0.5); + return mViewInfo->TimeToPosition(t, mLeftOffset); } @@ -1903,7 +1898,6 @@ void AdornedRulerPanel::OnMouseEvents(wxMouseEvent &evt) if (!mQuickPlayEnabled) return; - HandleSnapping(); if (evt.LeftDown()) @@ -1924,7 +1918,10 @@ void AdornedRulerPanel::OnMouseEvents(wxMouseEvent &evt) mMouseEventState = mesSelectingPlayRegionClick; // otherwise check which marker is nearer else { - if (fabs(mQuickPlayPos - mOldPlayRegionStart) < fabs(mQuickPlayPos - mOldPlayRegionEnd)) + // Don't compare times, compare positions. + //if (fabs(mQuickPlayPos - mPlayRegionStart) < fabs(mQuickPlayPos - mPlayRegionEnd)) + if (abs(Time2Pos(mQuickPlayPos) - Time2Pos(mPlayRegionStart)) < + abs(Time2Pos(mQuickPlayPos) - Time2Pos(mPlayRegionEnd))) mMouseEventState = mesDraggingPlayRegionStart; else mMouseEventState = mesDraggingPlayRegionEnd; diff --git a/src/widgets/Ruler.h b/src/widgets/Ruler.h index d5b542af3..0e14cba94 100644 --- a/src/widgets/Ruler.h +++ b/src/widgets/Ruler.h @@ -299,7 +299,6 @@ private: double Pos2Time(int p); int Time2Pos(double t); - int Seconds2Pixels(double t); bool IsWithinMarker(int mousePosX, double markerTime);