Bug2155: Deleting last track should reset play region to [0,0]

This commit is contained in:
Paul Licameli 2019-07-16 10:40:22 -04:00
parent 20772c995d
commit 2d6e8f3964
2 changed files with 11 additions and 7 deletions

View File

@ -1131,20 +1131,22 @@ void AdornedRulerPanel::DoIdle()
const auto &selectedRegion = viewInfo.selectedRegion;
auto &playRegion = ViewInfo::Get( project ).playRegion;
bool changedSelectedRegion = mLastDrawnSelectedRegion != selectedRegion;
auto gAudioIO = AudioIOBase::Get();
if (!gAudioIO->IsBusy() && !playRegion.Locked() && changedSelectedRegion)
if (!gAudioIO->IsBusy() && !playRegion.Locked() && mDirtySelectedRegion)
SetPlayRegion( selectedRegion.t0(), selectedRegion.t1() );
else {
changed = changed || changedSelectedRegion;
changed = changed || mLastDrawnH != viewInfo.h;
changed = changed || mLastDrawnZoom != viewInfo.GetZoom();
changed = changed
|| mDirtySelectedRegion
|| mLastDrawnH != viewInfo.h
|| mLastDrawnZoom != viewInfo.GetZoom()
;
if (changed)
// Cause ruler redraw anyway, because we may be zooming or scrolling,
// showing or hiding the scrub bar, etc.
Refresh();
}
mDirtySelectedRegion = false;
}
void AdornedRulerPanel::OnRecordStartStop(wxCommandEvent & evt)
@ -1168,7 +1170,7 @@ void AdornedRulerPanel::OnRecordStartStop(wxCommandEvent & evt)
if ( evt.GetInt() == 0 ) {
// So that the play region is updated
mLastDrawnSelectedRegion.setTimes( -1, -1 );
mDirtySelectedRegion = true;
DoIdle();
}
}
@ -1178,6 +1180,7 @@ void AdornedRulerPanel::OnPaint(wxPaintEvent & WXUNUSED(evt))
auto &viewInfo = ViewInfo::Get( *GetProject() );
mLastDrawnH = viewInfo.h;
mLastDrawnZoom = viewInfo.GetZoom();
mDirtySelectedRegion = (mLastDrawnSelectedRegion != viewInfo.selectedRegion);
mLastDrawnSelectedRegion = viewInfo.selectedRegion;
// To do, note other fisheye state when we have that

View File

@ -225,6 +225,7 @@ private:
SelectedRegion mLastDrawnSelectedRegion;
double mLastDrawnH{};
double mLastDrawnZoom{};
bool mDirtySelectedRegion{};
};
#endif //define __AUDACITY_ADORNED_RULER_PANEL__