1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-11-16 22:23:53 +01:00

Bug1933: commit 2c28af05e8 needs null checks

This commit is contained in:
Paul Licameli
2018-08-12 15:44:08 -04:00
parent 932734c89a
commit 328aa58966
5 changed files with 40 additions and 32 deletions

View File

@@ -1072,7 +1072,7 @@ void TrackPanel::OnMouseEvent(wxMouseEvent & event)
const auto foundCell = FindCell(event.m_x, event.m_y); const auto foundCell = FindCell(event.m_x, event.m_y);
const auto t = FindTrack( foundCell.pCell.get() ); const auto t = FindTrack( foundCell.pCell.get() );
if ( t ) if ( t )
EnsureVisible(t.get()); EnsureVisible(t.get());
} ); } );
} }

View File

@@ -192,8 +192,10 @@ UIHandle::Result StretchHandle::Drag
const wxMouseEvent &event = evt.event; const wxMouseEvent &event = evt.event;
const int x = event.m_x; const int x = event.m_x;
Track *clickedTrack = Track *clickedTrack;
static_cast<CommonTrackPanelCell*>(evt.pCell.get())->FindTrack().get(); if (evt.pCell)
clickedTrack =
static_cast<CommonTrackPanelCell*>(evt.pCell.get())->FindTrack().get();
if (clickedTrack == NULL && mpTrack != NULL) if (clickedTrack == NULL && mpTrack != NULL)
clickedTrack = mpTrack.get(); clickedTrack = mpTrack.get();

View File

@@ -178,7 +178,8 @@ UIHandle::Result EnvelopeHandle::Click
const ViewInfo &viewInfo = pProject->GetViewInfo(); const ViewInfo &viewInfo = pProject->GetViewInfo();
const auto pTrack = static_cast<Track*>(evt.pCell.get()); const auto pTrack = static_cast<Track*>(evt.pCell.get());
if (pTrack->GetKind() == Track::Wave) { if (pTrack &&
pTrack->GetKind() == Track::Wave) {
WaveTrack *const wt = static_cast<WaveTrack*>(pTrack); WaveTrack *const wt = static_cast<WaveTrack*>(pTrack);
if (wt->GetDisplay() != WaveTrack::Waveform) if (wt->GetDisplay() != WaveTrack::Waveform)
return Cancelled; return Cancelled;
@@ -203,7 +204,8 @@ UIHandle::Result EnvelopeHandle::Click
std::make_unique< EnvelopeEditor >( *clickedEnvelope, true ); std::make_unique< EnvelopeEditor >( *clickedEnvelope, true );
} }
} }
else if (pTrack->GetKind() == Track::Time) else if (pTrack &&
pTrack->GetKind() == Track::Time)
{ {
TimeTrack *const tt = static_cast<TimeTrack*>(pTrack); TimeTrack *const tt = static_cast<TimeTrack*>(pTrack);
if (!mEnvelope) if (!mEnvelope)

View File

@@ -837,34 +837,36 @@ UIHandle::Result SelectHandle::Drag
return RefreshNone; return RefreshNone;
} }
if ( auto clickedTrack = if (evt.pCell) {
static_cast<CommonTrackPanelCell*>(evt.pCell.get())->FindTrack() ) { if ( auto clickedTrack =
// Handle which tracks are selected static_cast<CommonTrackPanelCell*>(evt.pCell.get())->FindTrack() ) {
Track *sTrack = pTrack.get(); // Handle which tracks are selected
Track *eTrack = clickedTrack.get(); Track *sTrack = pTrack.get();
auto trackList = pProject->GetTracks(); Track *eTrack = clickedTrack.get();
auto pMixerBoard = pProject->GetMixerBoard(); auto trackList = pProject->GetTracks();
if ( sTrack && eTrack && !event.ControlDown() ) { auto pMixerBoard = pProject->GetMixerBoard();
auto &selectionState = pProject->GetSelectionState(); if ( sTrack && eTrack && !event.ControlDown() ) {
selectionState.SelectRangeOfTracks auto &selectionState = pProject->GetSelectionState();
( *trackList, *sTrack, *eTrack, pMixerBoard ); selectionState.SelectRangeOfTracks
( *trackList, *sTrack, *eTrack, pMixerBoard );
}
#ifdef EXPERIMENTAL_SPECTRAL_EDITING
#ifndef SPECTRAL_EDITING_ESC_KEY
if (mFreqSelMode == FREQ_SEL_SNAPPING_CENTER &&
!viewInfo.selectedRegion.isPoint())
MoveSnappingFreqSelection
(pProject, viewInfo, y, mRect.y, mRect.height, pTrack.get());
else
#endif
if (pProject->GetTracks()->Lock(mFreqSelTrack) == pTrack)
AdjustFreqSelection(
static_cast<WaveTrack*>(pTrack.get()),
viewInfo, y, mRect.y, mRect.height);
#endif
AdjustSelection(pProject, viewInfo, x, mRect.x, clickedTrack.get());
} }
#ifdef EXPERIMENTAL_SPECTRAL_EDITING
#ifndef SPECTRAL_EDITING_ESC_KEY
if (mFreqSelMode == FREQ_SEL_SNAPPING_CENTER &&
!viewInfo.selectedRegion.isPoint())
MoveSnappingFreqSelection
(pProject, viewInfo, y, mRect.y, mRect.height, pTrack.get());
else
#endif
if (pProject->GetTracks()->Lock(mFreqSelTrack) == pTrack)
AdjustFreqSelection(
static_cast<WaveTrack*>(pTrack.get()),
viewInfo, y, mRect.y, mRect.height);
#endif
AdjustSelection(pProject, viewInfo, x, mRect.x, clickedTrack.get());
} }
return RefreshNone return RefreshNone

View File

@@ -431,6 +431,8 @@ UIHandle::Result TimeShiftHandle::Click
const ViewInfo &viewInfo = pProject->GetViewInfo(); const ViewInfo &viewInfo = pProject->GetViewInfo();
const auto pTrack = std::static_pointer_cast<Track>(evt.pCell); const auto pTrack = std::static_pointer_cast<Track>(evt.pCell);
if (!pTrack)
return RefreshCode::Cancelled;
TrackList *const trackList = pProject->GetTracks(); TrackList *const trackList = pProject->GetTracks();