From 7c17c158fd3da504b644dcef74d9e1a194c8482a Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Thu, 18 Jul 2019 12:57:35 -0400 Subject: [PATCH] Bug2159 re-fixed after ed33fde: see first fix at 7969b5a --- src/AdornedRulerPanel.cpp | 23 +++++++++++++---------- src/AdornedRulerPanel.h | 3 ++- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/AdornedRulerPanel.cpp b/src/AdornedRulerPanel.cpp index 8f3a953d2..4a0978ecc 100644 --- a/src/AdornedRulerPanel.cpp +++ b/src/AdornedRulerPanel.cpp @@ -935,10 +935,10 @@ AdornedRulerPanel::AdornedRulerPanel(AudacityProject* project, #endif wxTheApp->Bind(EVT_AUDIOIO_CAPTURE, - &AdornedRulerPanel::OnRecordStartStop, + &AdornedRulerPanel::OnAudioStartStop, this); wxTheApp->Bind(EVT_AUDIOIO_PLAYBACK, - &AdornedRulerPanel::OnRecordStartStop, + &AdornedRulerPanel::OnAudioStartStop, this); // Delay until after CommandManager has been populated: @@ -1149,7 +1149,7 @@ void AdornedRulerPanel::DoIdle() mDirtySelectedRegion = false; } -void AdornedRulerPanel::OnRecordStartStop(wxCommandEvent & evt) +void AdornedRulerPanel::OnAudioStartStop(wxCommandEvent & evt) { evt.Skip(); @@ -1168,11 +1168,9 @@ void AdornedRulerPanel::OnRecordStartStop(wxCommandEvent & evt) } } - if ( evt.GetInt() == 0 ) { + if ( evt.GetInt() == 0 ) // So that the play region is updated - mDirtySelectedRegion = true; - DoIdle(); - } + DoSelectionChange( mViewInfo->selectedRegion ); } void AdornedRulerPanel::OnPaint(wxPaintEvent & WXUNUSED(evt)) @@ -1231,14 +1229,19 @@ void AdornedRulerPanel::OnThemeChange(wxCommandEvent& evt) void AdornedRulerPanel::OnSelectionChange(SelectedRegionEvent& evt) { evt.Skip(); + if (!evt.pRegion) + return; + auto &selectedRegion = *evt.pRegion; + DoSelectionChange( selectedRegion ); +} + +void AdornedRulerPanel::DoSelectionChange( const SelectedRegion &selectedRegion ) +{ auto gAudioIO = AudioIOBase::Get(); if ( !gAudioIO->IsBusy() && !ViewInfo::Get( *mProject ).playRegion.Locked() ) { - if (!evt.pRegion) - return; - auto &selectedRegion = *evt.pRegion; SetPlayRegion( selectedRegion.t0(), selectedRegion.t1() ); } } diff --git a/src/AdornedRulerPanel.h b/src/AdornedRulerPanel.h index 03e12ee32..ca66f8df1 100644 --- a/src/AdornedRulerPanel.h +++ b/src/AdornedRulerPanel.h @@ -82,11 +82,12 @@ public: private: void DoIdle(); void OnIdle( wxIdleEvent &evt ); - void OnRecordStartStop(wxCommandEvent & evt); + void OnAudioStartStop(wxCommandEvent & evt); void OnPaint(wxPaintEvent &evt); void OnSize(wxSizeEvent &evt); void OnThemeChange(wxCommandEvent& evt); void OnSelectionChange(SelectedRegionEvent& evt); + void DoSelectionChange( const SelectedRegion &selectedRegion ); bool UpdateRects(); void HandleQPClick(wxMouseEvent &event, wxCoord mousePosX); void HandleQPDrag(wxMouseEvent &event, wxCoord mousePosX);