1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-08-07 07:39:29 +02:00

Bug1933: commit 2c28af05e8be98aa9ab609823d1ff1d27fb 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 t = FindTrack( foundCell.pCell.get() );
if ( t )
EnsureVisible(t.get());
EnsureVisible(t.get());
} );
}

View File

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

View File

@ -178,7 +178,8 @@ UIHandle::Result EnvelopeHandle::Click
const ViewInfo &viewInfo = pProject->GetViewInfo();
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);
if (wt->GetDisplay() != WaveTrack::Waveform)
return Cancelled;
@ -203,7 +204,8 @@ UIHandle::Result EnvelopeHandle::Click
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);
if (!mEnvelope)

View File

@ -837,34 +837,36 @@ UIHandle::Result SelectHandle::Drag
return RefreshNone;
}
if ( auto clickedTrack =
static_cast<CommonTrackPanelCell*>(evt.pCell.get())->FindTrack() ) {
// Handle which tracks are selected
Track *sTrack = pTrack.get();
Track *eTrack = clickedTrack.get();
auto trackList = pProject->GetTracks();
auto pMixerBoard = pProject->GetMixerBoard();
if ( sTrack && eTrack && !event.ControlDown() ) {
auto &selectionState = pProject->GetSelectionState();
selectionState.SelectRangeOfTracks
( *trackList, *sTrack, *eTrack, pMixerBoard );
}
if (evt.pCell) {
if ( auto clickedTrack =
static_cast<CommonTrackPanelCell*>(evt.pCell.get())->FindTrack() ) {
// Handle which tracks are selected
Track *sTrack = pTrack.get();
Track *eTrack = clickedTrack.get();
auto trackList = pProject->GetTracks();
auto pMixerBoard = pProject->GetMixerBoard();
if ( sTrack && eTrack && !event.ControlDown() ) {
auto &selectionState = pProject->GetSelectionState();
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

View File

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