CommonTrackPanelCell::FindTrack returns shared_ptr
This commit is contained in:
parent
b3208ab12d
commit
708d84ac22
|
@ -317,9 +317,9 @@ void Track::SyncLockAdjust(double oldT1, double newT1)
|
|||
}
|
||||
}
|
||||
|
||||
Track *Track::FindTrack()
|
||||
std::shared_ptr<Track> Track::FindTrack()
|
||||
{
|
||||
return this;
|
||||
return Pointer( this );
|
||||
}
|
||||
|
||||
void PlayableTrack::Init( const PlayableTrack &orig )
|
||||
|
|
|
@ -308,7 +308,7 @@ class AUDACITY_DLL_API Track /* not final */
|
|||
bool IsSyncLockSelected() const;
|
||||
|
||||
protected:
|
||||
Track *FindTrack() override;
|
||||
std::shared_ptr<Track> FindTrack() override;
|
||||
|
||||
// These are called to create controls on demand:
|
||||
virtual std::shared_ptr<TrackControls> GetControls() = 0;
|
||||
|
|
|
@ -880,7 +880,8 @@ void TrackPanel::HandleCursor( const TrackPanelMouseEvent &tpmEvent )
|
|||
const auto size = GetSize();
|
||||
HitTestResult hitTest( pCell->HitTest(tpmEvent, GetProject()) );
|
||||
tip = hitTest.preview.message;
|
||||
ProcessUIHandleResult(this, mRuler, track, track, hitTest.preview.refreshCode);
|
||||
ProcessUIHandleResult
|
||||
(this, mRuler, track.get(), track.get(), hitTest.preview.refreshCode);
|
||||
pCursor = hitTest.preview.cursor;
|
||||
if (pCursor)
|
||||
SetCursor(*pCursor);
|
||||
|
@ -1234,7 +1235,7 @@ void TrackPanel::HandleWheelRotation( TrackPanelMouseEvent &tpmEvent )
|
|||
unsigned result =
|
||||
pCell->HandleWheelRotation( tpmEvent, GetProject() );
|
||||
auto pTrack = static_cast<CommonTrackPanelCell*>(pCell)->FindTrack();
|
||||
ProcessUIHandleResult(this, mRuler, pTrack, pTrack, result);
|
||||
ProcessUIHandleResult(this, mRuler, pTrack.get(), pTrack.get(), result);
|
||||
}
|
||||
|
||||
/// Filter captured keys typed into LabelTracks.
|
||||
|
@ -1543,8 +1544,9 @@ void TrackPanel::HandleClick( const TrackPanelMouseEvent &tpmEvent )
|
|||
if (refreshResult & RefreshCode::Cancelled)
|
||||
mUIHandle = NULL;
|
||||
else
|
||||
mpClickedTrack = pTrack;
|
||||
ProcessUIHandleResult(this, mRuler, pTrack, pTrack, refreshResult);
|
||||
mpClickedTrack = pTrack.get();
|
||||
ProcessUIHandleResult
|
||||
(this, mRuler, pTrack.get(), pTrack.get(), refreshResult);
|
||||
HandleCursor( tpmEvent );
|
||||
}
|
||||
}
|
||||
|
@ -2513,8 +2515,7 @@ TrackPanel::FoundCell TrackPanel::FindCell(int mouseX, int mouseY)
|
|||
iter = prev;
|
||||
auto found = *iter;
|
||||
return {
|
||||
Track::Pointer(
|
||||
static_cast<CommonTrackPanelCell*>( found.first.get() )->FindTrack() ),
|
||||
static_cast<CommonTrackPanelCell*>( found.first.get() )->FindTrack(),
|
||||
found.first,
|
||||
found.second
|
||||
};
|
||||
|
|
|
@ -72,7 +72,7 @@ UIHandle::Result TrackPanelResizeHandle::Click
|
|||
const wxMouseEvent &event = evt.event;
|
||||
CommonTrackPanelCell *const pCell =
|
||||
static_cast<CommonTrackPanelCell*>(evt.pCell);
|
||||
Track *track = track = pCell->FindTrack();
|
||||
auto track = pCell->FindTrack().get();
|
||||
if (track && dynamic_cast< TrackControls * >( pCell )) {
|
||||
// Clicked under a label;
|
||||
// if stereo, replace left channel with the right:
|
||||
|
|
|
@ -79,7 +79,7 @@ public:
|
|||
(const TrackPanelMouseEvent &event,
|
||||
const AudacityProject *pProject) override;
|
||||
|
||||
Track *FindTrack() override { return mpTrack.lock().get(); };
|
||||
std::shared_ptr<Track> FindTrack() override { return mpTrack.lock(); };
|
||||
private:
|
||||
friend class TrackPanelCellIterator;
|
||||
std::weak_ptr<Track> mpTrack;
|
||||
|
|
|
@ -155,12 +155,12 @@ HitTestResult NoteTrackControls::HitTest
|
|||
HitTestResult result;
|
||||
if (NULL !=
|
||||
(result = MuteButtonHandle::HitTest
|
||||
(event, rect, pProject, track)).handle)
|
||||
(event, rect, pProject, track.get())).handle)
|
||||
return result;
|
||||
|
||||
if (NULL !=
|
||||
(result = SoloButtonHandle::HitTest
|
||||
(event, rect, pProject, track)).handle)
|
||||
(event, rect, pProject, track.get())).handle)
|
||||
return result;
|
||||
#ifdef EXPERIMENTAL_MIDI_OUT
|
||||
if (NULL != (result =
|
||||
|
|
|
@ -109,7 +109,7 @@ NoteTrackVZoomHandle::~NoteTrackVZoomHandle()
|
|||
UIHandle::Result NoteTrackVZoomHandle::Click
|
||||
(const TrackPanelMouseEvent &evt, AudacityProject *pProject)
|
||||
{
|
||||
mpTrack = Track::Pointer<NoteTrack>(
|
||||
mpTrack = std::static_pointer_cast<NoteTrack>(
|
||||
static_cast<NoteTrackVRulerControls*>(evt.pCell)->FindTrack() );
|
||||
mRect = evt.rect;
|
||||
|
||||
|
|
|
@ -196,7 +196,7 @@ UIHandle::Result StretchHandle::Drag
|
|||
const int x = event.m_x;
|
||||
|
||||
Track *clickedTrack =
|
||||
static_cast<CommonTrackPanelCell*>(evt.pCell)->FindTrack();
|
||||
static_cast<CommonTrackPanelCell*>(evt.pCell)->FindTrack().get();
|
||||
|
||||
if (clickedTrack == NULL && mpTrack != NULL)
|
||||
clickedTrack = mpTrack;
|
||||
|
|
|
@ -65,20 +65,20 @@ HitTestResult WaveTrackControls::HitTest
|
|||
HitTestResult result;
|
||||
if (NULL !=
|
||||
(result = MuteButtonHandle::HitTest
|
||||
(event, rect, pProject, track)).handle)
|
||||
(event, rect, pProject, track.get())).handle)
|
||||
return result;
|
||||
|
||||
if (NULL !=
|
||||
(result = SoloButtonHandle::HitTest
|
||||
(event, rect, pProject, track)).handle)
|
||||
(event, rect, pProject, track.get())).handle)
|
||||
return result;
|
||||
|
||||
if (NULL != (result =
|
||||
GainSliderHandle::HitTest(event, rect, pProject, track)).handle)
|
||||
GainSliderHandle::HitTest(event, rect, pProject, track.get())).handle)
|
||||
return result;
|
||||
|
||||
if (NULL != (result =
|
||||
PanSliderHandle::HitTest(event, rect, pProject, track)).handle)
|
||||
PanSliderHandle::HitTest(event, rect, pProject, track.get())).handle)
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -559,7 +559,7 @@ WaveTrackVZoomHandle::~WaveTrackVZoomHandle()
|
|||
UIHandle::Result WaveTrackVZoomHandle::Click
|
||||
(const TrackPanelMouseEvent &evt, AudacityProject *)
|
||||
{
|
||||
mpTrack = Track::Pointer<WaveTrack>(
|
||||
mpTrack = std::static_pointer_cast<WaveTrack>(
|
||||
static_cast<WaveTrackVRulerControls*>(evt.pCell)->FindTrack() );
|
||||
mRect = evt.rect;
|
||||
|
||||
|
@ -674,13 +674,13 @@ unsigned WaveTrackVRulerControls::HandleWheelRotation
|
|||
// is a narrow enough target.
|
||||
evt.event.Skip(false);
|
||||
|
||||
Track *const pTrack = FindTrack();
|
||||
const auto pTrack = FindTrack();
|
||||
if (!pTrack)
|
||||
return RefreshNone;
|
||||
wxASSERT(pTrack->GetKind() == Track::Wave);
|
||||
auto steps = evt.steps;
|
||||
|
||||
WaveTrack *const wt = static_cast<WaveTrack*>(pTrack);
|
||||
const auto wt = static_cast<WaveTrack*>(pTrack.get());
|
||||
// Assume linked track is wave or null
|
||||
const auto partner = static_cast<WaveTrack*>(wt->GetLink());
|
||||
const bool isDB =
|
||||
|
|
|
@ -102,8 +102,8 @@ HitTestResult BackgroundCell::HitTest
|
|||
return BackgroundHandle::HitAnywhere();
|
||||
}
|
||||
|
||||
Track *BackgroundCell::FindTrack()
|
||||
std::shared_ptr<Track> BackgroundCell::FindTrack()
|
||||
{
|
||||
return nullptr;
|
||||
return {};
|
||||
}
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ protected:
|
|||
(const TrackPanelMouseEvent &event,
|
||||
const AudacityProject *) override;
|
||||
|
||||
Track *FindTrack() override;
|
||||
std::shared_ptr<Track> FindTrack() override;
|
||||
|
||||
private:
|
||||
AudacityProject *mpProject;
|
||||
|
|
|
@ -39,8 +39,7 @@ UIHandle::Result ButtonHandle::Click
|
|||
(const TrackPanelMouseEvent &evt, AudacityProject *)
|
||||
{
|
||||
using namespace RefreshCode;
|
||||
auto pTrack = Track::Pointer(
|
||||
static_cast<TrackControls*>(evt.pCell)->FindTrack() );
|
||||
auto pTrack = static_cast<TrackControls*>(evt.pCell)->FindTrack();
|
||||
if ( !pTrack )
|
||||
return Cancelled;
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@ Paul Licameli split from TrackPanel.cpp
|
|||
#define __AUDACITY_COMMON_TRACK_PANEL_CELL__
|
||||
|
||||
#include "../../TrackPanelCell.h"
|
||||
#include "../../MemoryX.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
class Track;
|
||||
|
@ -26,7 +27,7 @@ public:
|
|||
|
||||
virtual ~CommonTrackPanelCell() = 0;
|
||||
|
||||
virtual Track *FindTrack() = 0;
|
||||
virtual std::shared_ptr<Track> FindTrack() = 0;
|
||||
|
||||
protected:
|
||||
unsigned HandleWheelRotation
|
||||
|
|
|
@ -818,7 +818,7 @@ UIHandle::Result SelectHandle::Drag
|
|||
static_cast<CommonTrackPanelCell*>(evt.pCell)->FindTrack() ) {
|
||||
// Handle which tracks are selected
|
||||
Track *sTrack = pTrack.get();
|
||||
Track *eTrack = clickedTrack;
|
||||
Track *eTrack = clickedTrack.get();
|
||||
auto trackList = pProject->GetTracks();
|
||||
auto pMixerBoard = pProject->GetMixerBoard();
|
||||
if ( sTrack && eTrack && !event.ControlDown() ) {
|
||||
|
@ -841,7 +841,7 @@ UIHandle::Result SelectHandle::Drag
|
|||
viewInfo, y, mRect.y, mRect.height);
|
||||
#endif
|
||||
|
||||
AdjustSelection(viewInfo, x, mRect.x, clickedTrack);
|
||||
AdjustSelection(viewInfo, x, mRect.x, clickedTrack.get());
|
||||
}
|
||||
|
||||
return RefreshNone
|
||||
|
|
|
@ -501,7 +501,7 @@ UIHandle::Result TimeShiftHandle::Drag
|
|||
|
||||
// Uncommenting this permits drag to continue to work even over the controls area
|
||||
/*
|
||||
pTrack = static_cast<CommonTrackPanelCell*>(evt.pCell)->FindTrack();
|
||||
pTrack = static_cast<CommonTrackPanelCell*>(evt.pCell)->FindTrack().get();
|
||||
*/
|
||||
|
||||
if (!pTrack) {
|
||||
|
|
|
@ -32,9 +32,9 @@ TrackControls::~TrackControls()
|
|||
{
|
||||
}
|
||||
|
||||
Track *TrackControls::FindTrack()
|
||||
std::shared_ptr<Track> TrackControls::FindTrack()
|
||||
{
|
||||
return mwTrack.lock().get();
|
||||
return mwTrack.lock();
|
||||
}
|
||||
|
||||
HitTestResult TrackControls::HitTest
|
||||
|
@ -206,12 +206,12 @@ unsigned TrackControls::DoContextMenu
|
|||
if (!track)
|
||||
return RefreshCode::RefreshNone;
|
||||
|
||||
InitMenuData data{ track, pParent, RefreshCode::RefreshNone };
|
||||
InitMenuData data{ track.get(), pParent, RefreshCode::RefreshNone };
|
||||
|
||||
const auto pTable = &TrackMenuTable::Instance();
|
||||
auto pMenu = PopupMenuTable::BuildMenu(pParent, pTable, &data);
|
||||
|
||||
PopupMenuTable *const pExtension = GetMenuExtension(track);
|
||||
PopupMenuTable *const pExtension = GetMenuExtension(track.get());
|
||||
if (pExtension)
|
||||
pMenu->Extend(pExtension);
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ public:
|
|||
|
||||
virtual ~TrackControls() = 0;
|
||||
|
||||
Track *FindTrack() override;
|
||||
std::shared_ptr<Track> FindTrack() override;
|
||||
|
||||
// This is passed to the InitMenu() methods of the PopupMenuTable
|
||||
// objects returned by GetMenuExtension:
|
||||
|
|
|
@ -95,7 +95,7 @@ UIHandle::Result TrackSelectHandle::Click
|
|||
return Cancelled;
|
||||
|
||||
TrackControls *const pControls = static_cast<TrackControls*>(evt.pCell);
|
||||
Track *const pTrack = pControls->FindTrack();
|
||||
const auto pTrack = pControls->FindTrack();
|
||||
if (!pTrack)
|
||||
return Cancelled;
|
||||
TrackPanel *const trackPanel = pProject->GetTrackPanel();
|
||||
|
@ -110,12 +110,12 @@ UIHandle::Result TrackSelectHandle::Click
|
|||
result |= Cancelled;
|
||||
else {
|
||||
mRearrangeCount = 0;
|
||||
mpTrack = pTrack;
|
||||
mpTrack = pTrack.get();
|
||||
CalculateRearrangingThresholds(event);
|
||||
}
|
||||
|
||||
pProject->HandleListSelection
|
||||
(pTrack, event.ShiftDown(), event.ControlDown(), !unsafe);
|
||||
(pTrack.get(), event.ShiftDown(), event.ControlDown(), !unsafe);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
|
@ -27,9 +27,9 @@ TrackVRulerControls::~TrackVRulerControls()
|
|||
{
|
||||
}
|
||||
|
||||
Track *TrackVRulerControls::FindTrack()
|
||||
std::shared_ptr<Track> TrackVRulerControls::FindTrack()
|
||||
{
|
||||
return mwTrack.lock().get();
|
||||
return mwTrack.lock();
|
||||
}
|
||||
|
||||
HitTestResult TrackVRulerControls::HitTest
|
||||
|
|
|
@ -25,7 +25,7 @@ public:
|
|||
|
||||
virtual ~TrackVRulerControls() = 0;
|
||||
|
||||
Track *FindTrack() override;
|
||||
std::shared_ptr<Track> FindTrack() override;
|
||||
|
||||
// Define a default hit test method, just for message and cursor
|
||||
HitTestResult HitTest
|
||||
|
|
Loading…
Reference in New Issue