From 095ee9185f384bf9d467e36e99089d5b384d8a73 Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Wed, 20 Dec 2017 22:51:22 -0500 Subject: [PATCH] Reimplement the narrowed hot zone for vertical ruler... ... Don't define the TrackPanelCell to be narrower. Instead, change its hit-test routine, and only if it is a Wave track. Previous implementation had the unintended consequence, that a click in the area excluded from vertical zooming was treated as a click on the background outside of all tracks, causing de-selection of all tracks. --- src/TrackPanel.cpp | 3 +-- .../wavetrack/ui/WaveTrackVRulerControls.cpp | 16 ++++++++++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/TrackPanel.cpp b/src/TrackPanel.cpp index a3be6b483..01fa7b2b9 100644 --- a/src/TrackPanel.cpp +++ b/src/TrackPanel.cpp @@ -3545,10 +3545,9 @@ void TrackPanelCellIterator::UpdateRect() } case CellType::VRuler: { - const int kGuard = 5; // 5 pixels to reduce risk of VZooming accidentally mRect.x = kTrackInfoWidth; // Right edge of the VRuler is inactive. - mRect.width = mPanel->GetLeftOffset() - mRect.x -kGuard; + mRect.width = mPanel->GetLeftOffset() - mRect.x; mRect.y += kTopMargin; mRect.height -= (kBottomMargin + kTopMargin); } diff --git a/src/tracks/playabletrack/wavetrack/ui/WaveTrackVRulerControls.cpp b/src/tracks/playabletrack/wavetrack/ui/WaveTrackVRulerControls.cpp index 0b66e3a06..268125ab2 100644 --- a/src/tracks/playabletrack/wavetrack/ui/WaveTrackVRulerControls.cpp +++ b/src/tracks/playabletrack/wavetrack/ui/WaveTrackVRulerControls.cpp @@ -31,12 +31,16 @@ std::vector WaveTrackVRulerControls::HitTest const AudacityProject *pProject) { std::vector results; - auto pTrack = Track::Pointer( FindTrack().get() ); - if (pTrack) { - auto result = std::make_shared( - pTrack, st.rect, st.state.m_y ); - result = AssignUIHandlePtr(mVZoomHandle, result); - results.push_back(result); + + const int kGuard = 5; // 5 pixels to reduce risk of VZooming accidentally + if ( st.state.GetX() <= st.rect.GetRight() - kGuard ) { + auto pTrack = Track::Pointer( FindTrack().get() ); + if (pTrack) { + auto result = std::make_shared( + pTrack, st.rect, st.state.m_y ); + result = AssignUIHandlePtr(mVZoomHandle, result); + results.push_back(result); + } } auto more = TrackVRulerControls::HitTest(st, pProject);