mirror of
https://github.com/cookiengineer/audacity
synced 2025-06-22 15:20:15 +02:00
null check uses of CommonTrackPanelCell::FindTrack
This commit is contained in:
parent
28b40e02fb
commit
58fea6d520
@ -151,7 +151,7 @@ HitTestResult NoteTrackControls::HitTest
|
|||||||
const wxRect &rect = evt.rect;
|
const wxRect &rect = evt.rect;
|
||||||
if (event.ButtonDown() || event.ButtonDClick()) {
|
if (event.ButtonDown() || event.ButtonDClick()) {
|
||||||
auto track = FindTrack();
|
auto track = FindTrack();
|
||||||
if (track->GetKind() == Track::Note) {
|
if (track && track->GetKind() == Track::Note) {
|
||||||
HitTestResult result;
|
HitTestResult result;
|
||||||
if (NULL !=
|
if (NULL !=
|
||||||
(result = MuteButtonHandle::HitTest
|
(result = MuteButtonHandle::HitTest
|
||||||
|
@ -61,7 +61,7 @@ HitTestResult WaveTrackControls::HitTest
|
|||||||
const wxRect &rect = evt.rect;
|
const wxRect &rect = evt.rect;
|
||||||
if (event.Button(wxMOUSE_BTN_LEFT)) {
|
if (event.Button(wxMOUSE_BTN_LEFT)) {
|
||||||
auto track = FindTrack();
|
auto track = FindTrack();
|
||||||
if (track->GetKind() == Track::Wave) {
|
if (track && track->GetKind() == Track::Wave) {
|
||||||
HitTestResult result;
|
HitTestResult result;
|
||||||
if (NULL !=
|
if (NULL !=
|
||||||
(result = MuteButtonHandle::HitTest
|
(result = MuteButtonHandle::HitTest
|
||||||
|
@ -675,6 +675,8 @@ unsigned WaveTrackVRulerControls::HandleWheelRotation
|
|||||||
evt.event.Skip(false);
|
evt.event.Skip(false);
|
||||||
|
|
||||||
Track *const pTrack = FindTrack();
|
Track *const pTrack = FindTrack();
|
||||||
|
if (!pTrack)
|
||||||
|
return RefreshNone;
|
||||||
wxASSERT(pTrack->GetKind() == Track::Wave);
|
wxASSERT(pTrack->GetKind() == Track::Wave);
|
||||||
auto steps = evt.steps;
|
auto steps = evt.steps;
|
||||||
|
|
||||||
|
@ -38,15 +38,19 @@ HitTestPreview ButtonHandle::HitPreview()
|
|||||||
UIHandle::Result ButtonHandle::Click
|
UIHandle::Result ButtonHandle::Click
|
||||||
(const TrackPanelMouseEvent &evt, AudacityProject *)
|
(const TrackPanelMouseEvent &evt, AudacityProject *)
|
||||||
{
|
{
|
||||||
const wxMouseEvent &event = evt.event;
|
|
||||||
using namespace RefreshCode;
|
using namespace RefreshCode;
|
||||||
|
auto pTrack = Track::Pointer(
|
||||||
|
static_cast<TrackControls*>(evt.pCell)->FindTrack() );
|
||||||
|
if ( !pTrack )
|
||||||
|
return Cancelled;
|
||||||
|
|
||||||
|
const wxMouseEvent &event = evt.event;
|
||||||
if (!event.Button(wxMOUSE_BTN_LEFT))
|
if (!event.Button(wxMOUSE_BTN_LEFT))
|
||||||
return Cancelled;
|
return Cancelled;
|
||||||
|
|
||||||
// Come here for left click or double click
|
// Come here for left click or double click
|
||||||
if (mRect.Contains(event.m_x, event.m_y)) {
|
if (mRect.Contains(event.m_x, event.m_y)) {
|
||||||
mpTrack = Track::Pointer(
|
mpTrack = pTrack;
|
||||||
static_cast<TrackControls*>(evt.pCell)->FindTrack() );
|
|
||||||
TrackControls::gCaptureState = mDragCode;
|
TrackControls::gCaptureState = mDragCode;
|
||||||
// Toggle visible button state
|
// Toggle visible button state
|
||||||
return RefreshCell;
|
return RefreshCell;
|
||||||
|
@ -808,35 +808,35 @@ UIHandle::Result SelectHandle::Drag
|
|||||||
return RefreshNone;
|
return RefreshNone;
|
||||||
}
|
}
|
||||||
|
|
||||||
Track *clickedTrack =
|
if ( auto clickedTrack =
|
||||||
static_cast<CommonTrackPanelCell*>(evt.pCell)->FindTrack();
|
static_cast<CommonTrackPanelCell*>(evt.pCell)->FindTrack() ) {
|
||||||
|
// Handle which tracks are selected
|
||||||
// Handle which tracks are selected
|
Track *sTrack = pTrack.get();
|
||||||
Track *sTrack = pTrack.get();
|
Track *eTrack = clickedTrack;
|
||||||
Track *eTrack = clickedTrack;
|
auto trackList = pProject->GetTracks();
|
||||||
auto trackList = pProject->GetTracks();
|
auto pMixerBoard = pProject->GetMixerBoard();
|
||||||
auto pMixerBoard = pProject->GetMixerBoard();
|
if ( sTrack && eTrack && !event.ControlDown() ) {
|
||||||
if ( sTrack && eTrack && !event.ControlDown() ) {
|
auto &selectionState = pProject->GetSelectionState();
|
||||||
auto &selectionState = pProject->GetSelectionState();
|
selectionState.SelectRangeOfTracks
|
||||||
selectionState.SelectRangeOfTracks
|
|
||||||
( *trackList, *sTrack, *eTrack, pMixerBoard );
|
( *trackList, *sTrack, *eTrack, pMixerBoard );
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef EXPERIMENTAL_SPECTRAL_EDITING
|
#ifdef EXPERIMENTAL_SPECTRAL_EDITING
|
||||||
#ifndef SPECTRAL_EDITING_ESC_KEY
|
#ifndef SPECTRAL_EDITING_ESC_KEY
|
||||||
if (mFreqSelMode == FREQ_SEL_SNAPPING_CENTER &&
|
if (mFreqSelMode == FREQ_SEL_SNAPPING_CENTER &&
|
||||||
!viewInfo.selectedRegion.isPoint())
|
!viewInfo.selectedRegion.isPoint())
|
||||||
MoveSnappingFreqSelection
|
MoveSnappingFreqSelection
|
||||||
(pProject, viewInfo, y, mRect.y, mRect.height, pTrack.get());
|
(pProject, viewInfo, y, mRect.y, mRect.height, pTrack.get());
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
if (mFreqSelTrack.lock() == pTrack)
|
if (mFreqSelTrack.lock() == pTrack)
|
||||||
AdjustFreqSelection(
|
AdjustFreqSelection(
|
||||||
static_cast<WaveTrack*>(pTrack.get()),
|
static_cast<WaveTrack*>(pTrack.get()),
|
||||||
viewInfo, y, mRect.y, mRect.height);
|
viewInfo, y, mRect.y, mRect.height);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
AdjustSelection(viewInfo, x, mRect.x, clickedTrack);
|
AdjustSelection(viewInfo, x, mRect.x, clickedTrack);
|
||||||
|
}
|
||||||
|
|
||||||
return RefreshNone
|
return RefreshNone
|
||||||
|
|
||||||
|
@ -203,6 +203,9 @@ unsigned TrackControls::DoContextMenu
|
|||||||
TrackInfo::GetTitleBarRect(rect, buttonRect);
|
TrackInfo::GetTitleBarRect(rect, buttonRect);
|
||||||
|
|
||||||
auto track = FindTrack();
|
auto track = FindTrack();
|
||||||
|
if (!track)
|
||||||
|
return RefreshCode::RefreshNone;
|
||||||
|
|
||||||
InitMenuData data{ track, pParent, RefreshCode::RefreshNone };
|
InitMenuData data{ track, pParent, RefreshCode::RefreshNone };
|
||||||
|
|
||||||
const auto pTable = &TrackMenuTable::Instance();
|
const auto pTable = &TrackMenuTable::Instance();
|
||||||
|
@ -96,6 +96,8 @@ UIHandle::Result TrackSelectHandle::Click
|
|||||||
|
|
||||||
TrackControls *const pControls = static_cast<TrackControls*>(evt.pCell);
|
TrackControls *const pControls = static_cast<TrackControls*>(evt.pCell);
|
||||||
Track *const pTrack = pControls->FindTrack();
|
Track *const pTrack = pControls->FindTrack();
|
||||||
|
if (!pTrack)
|
||||||
|
return Cancelled;
|
||||||
TrackPanel *const trackPanel = pProject->GetTrackPanel();
|
TrackPanel *const trackPanel = pProject->GetTrackPanel();
|
||||||
const bool unsafe = pProject->IsAudioActive();
|
const bool unsafe = pProject->IsAudioActive();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user