mirror of
https://github.com/cookiengineer/audacity
synced 2025-08-01 16:39:30 +02:00
Fix update of minimized state (crash in MSVC debug runtime)...
... This time those run-time checks really did something useful for us. There was a decrement of a begin iterator of an STL container, a no-no.
This commit is contained in:
parent
ae351abbc2
commit
40a117b160
@ -58,8 +58,13 @@ void WaveTrackVRulerControls::DoZoomPreset( int i)
|
||||
|
||||
const auto wt = static_cast<WaveTrack*>(pTrack.get());
|
||||
|
||||
// Don't pass the partner, that causes problems when updating display
|
||||
// during recording and there are special pending tracks.
|
||||
// This function implements WaveTrack::DoSetMinimized which is always
|
||||
// called in a context that loops over linked tracks too and reinvokes.
|
||||
auto partner = nullptr;
|
||||
WaveTrackVZoomHandle::DoZoom(
|
||||
NULL, wt, (i==1)?kZoomHalfWave: kZoom1to1,
|
||||
NULL, wt, partner, (i==1)?kZoomHalfWave: kZoom1to1,
|
||||
wxRect(0,0,0,0), 0,0, true);
|
||||
}
|
||||
|
||||
@ -140,8 +145,9 @@ unsigned WaveTrackVRulerControls::HandleWheelRotation
|
||||
}
|
||||
else if (event.CmdDown() && !event.ShiftDown()) {
|
||||
const int yy = event.m_y;
|
||||
const auto partner = static_cast<WaveTrack *>(wt);
|
||||
WaveTrackVZoomHandle::DoZoom(
|
||||
pProject, wt, (steps < 0)?kZoomOut:kZoomIn,
|
||||
pProject, wt, partner, (steps < 0)?kZoomOut:kZoomIn,
|
||||
evt.rect, yy, yy, true);
|
||||
}
|
||||
else if (!event.CmdDown() && event.ShiftDown()) {
|
||||
|
@ -65,13 +65,11 @@ void WaveTrackVZoomHandle::Enter(bool)
|
||||
// the zoomKind and cause a drag-zoom-in.
|
||||
void WaveTrackVZoomHandle::DoZoom
|
||||
(AudacityProject *pProject,
|
||||
WaveTrack *pTrack, int ZoomKind,
|
||||
WaveTrack *pTrack, WaveTrack *partner, int ZoomKind,
|
||||
const wxRect &rect, int zoomStart, int zoomEnd,
|
||||
bool fixedMousePoint)
|
||||
{
|
||||
static const float ZOOMLIMIT = 0.001f;
|
||||
// Assume linked track is wave or null
|
||||
const auto partner = static_cast<WaveTrack *>(pTrack->GetLink());
|
||||
int height = rect.height;
|
||||
int ypos = rect.y;
|
||||
|
||||
@ -398,8 +396,11 @@ void WaveTrackVRulerMenuTable::InitMenu(Menu *, void *pUserData)
|
||||
|
||||
void WaveTrackVRulerMenuTable::OnZoom( int iZoomCode )
|
||||
{
|
||||
// Assume linked track is wave or null
|
||||
const auto partner = static_cast<WaveTrack *>(mpData->pTrack->GetLink());
|
||||
WaveTrackVZoomHandle::DoZoom
|
||||
(::GetActiveProject(), mpData->pTrack, iZoomCode, mpData->rect, mpData->yy, mpData->yy, false);
|
||||
(::GetActiveProject(), mpData->pTrack, partner,
|
||||
iZoomCode, mpData->rect, mpData->yy, mpData->yy, false);
|
||||
|
||||
using namespace RefreshCode;
|
||||
mpData->result = UpdateVRuler | RefreshAll;
|
||||
@ -684,7 +685,9 @@ UIHandle::Result WaveTrackVZoomHandle::Release
|
||||
if( bVZoom ){
|
||||
if( shiftDown )
|
||||
mZoomStart=mZoomEnd;
|
||||
DoZoom(pProject, pTrack.get(), shiftDown ? (rightUp ? kZoom1to1 : kZoomOut) : kZoomIn,
|
||||
const auto partner = static_cast<WaveTrack *>(pTrack->GetLink());
|
||||
DoZoom(pProject, pTrack.get(), partner,
|
||||
shiftDown ? (rightUp ? kZoom1to1 : kZoomOut) : kZoomIn,
|
||||
mRect, mZoomStart, mZoomEnd, false);
|
||||
}
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ public:
|
||||
|
||||
static void DoZoom
|
||||
(AudacityProject *pProject,
|
||||
WaveTrack *pTrack, int ZoomKind,
|
||||
WaveTrack *pTrack, WaveTrack *partner, int ZoomKind,
|
||||
const wxRect &rect, int zoomStart, int zoomEnd,
|
||||
bool fixedMousePoint);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user