1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-08-02 17:09:26 +02:00

MakeCursor returns smart pointer; TrackPanel stores smart pointers to cursors

This commit is contained in:
Paul Licameli 2016-04-09 23:06:10 -04:00
parent 414d0faa65
commit def8b7fa9b
3 changed files with 28 additions and 68 deletions

View File

@ -57,4 +57,4 @@
#endif #endif
wxCursor * MakeCursor(int WXUNUSED(CursorId), const char * pXpm[36], int HotX, int HotY); std::unique_ptr<wxCursor> MakeCursor(int WXUNUSED(CursorId), const char * pXpm[36], int HotX, int HotY);

View File

@ -418,10 +418,8 @@ END_EVENT_TABLE()
/// Makes a cursor from an XPM, uses CursorId as a fallback. /// Makes a cursor from an XPM, uses CursorId as a fallback.
/// TODO: Move this function to some other source file for reuse elsewhere. /// TODO: Move this function to some other source file for reuse elsewhere.
wxCursor * MakeCursor( int WXUNUSED(CursorId), const char * pXpm[36], int HotX, int HotY ) std::unique_ptr<wxCursor> MakeCursor( int WXUNUSED(CursorId), const char * pXpm[36], int HotX, int HotY )
{ {
wxCursor * pCursor;
#ifdef CURSORS_SIZE32 #ifdef CURSORS_SIZE32
const int HotAdjust =0; const int HotAdjust =0;
#else #else
@ -434,9 +432,7 @@ wxCursor * MakeCursor( int WXUNUSED(CursorId), const char * pXpm[36], int HotX,
Image.SetOption( wxIMAGE_OPTION_CUR_HOTSPOT_X, HotX-HotAdjust ); Image.SetOption( wxIMAGE_OPTION_CUR_HOTSPOT_X, HotX-HotAdjust );
Image.SetOption( wxIMAGE_OPTION_CUR_HOTSPOT_Y, HotY-HotAdjust ); Image.SetOption( wxIMAGE_OPTION_CUR_HOTSPOT_Y, HotY-HotAdjust );
pCursor = new wxCursor( Image ); return std::make_unique<wxCursor>( Image );
return pCursor;
} }
@ -523,12 +519,12 @@ TrackPanel::TrackPanel(wxWindow * parent, wxWindowID id,
StretchRightCursorXpm, 16, 16); StretchRightCursorXpm, 16, 16);
#endif #endif
mArrowCursor = new wxCursor(wxCURSOR_ARROW); mArrowCursor = std::make_unique<wxCursor>(wxCURSOR_ARROW);
mSmoothCursor = new wxCursor(wxCURSOR_SPRAYCAN); mSmoothCursor = std::make_unique<wxCursor>(wxCURSOR_SPRAYCAN);
mResizeCursor = new wxCursor(wxCURSOR_SIZENS); mResizeCursor = std::make_unique<wxCursor>(wxCURSOR_SIZENS);
mRearrangeCursor = new wxCursor(wxCURSOR_HAND); mRearrangeCursor = std::make_unique<wxCursor>(wxCURSOR_HAND);
mAdjustLeftSelectionCursor = new wxCursor(wxCURSOR_POINT_LEFT); mAdjustLeftSelectionCursor = std::make_unique<wxCursor>(wxCURSOR_POINT_LEFT);
mAdjustRightSelectionCursor = new wxCursor(wxCURSOR_POINT_RIGHT); mAdjustRightSelectionCursor = std::make_unique<wxCursor>(wxCURSOR_POINT_RIGHT);
mWaveTrackMenu = NULL; mWaveTrackMenu = NULL;
mChannelItemsInsertionPoint = 0; mChannelItemsInsertionPoint = 0;
@ -651,31 +647,6 @@ TrackPanel::~TrackPanel()
} }
delete mTrackArtist; delete mTrackArtist;
delete mArrowCursor;
delete mPencilCursor;
delete mSelectCursor;
delete mEnvelopeCursor;
delete mDisabledCursor;
delete mSlideCursor;
delete mResizeCursor;
delete mSmoothCursor;
delete mZoomInCursor;
delete mZoomOutCursor;
delete mLabelCursorLeft;
delete mLabelCursorRight;
delete mRearrangeCursor;
delete mAdjustLeftSelectionCursor;
delete mAdjustRightSelectionCursor;
#ifdef EXPERIMENTAL_SPECTRAL_EDITING
delete mBottomFrequencyCursor;
delete mTopFrequencyCursor;
delete mBandWidthCursor;
#endif
#if USE_MIDI
delete mStretchCursor;
delete mStretchLeftCursor;
delete mStretchRightCursor;
#endif
delete mSnapManager; delete mSnapManager;
@ -1796,7 +1767,7 @@ void TrackPanel::HandleCenterFrequencyCursor
#endif #endif
*ppCursor = mEnvelopeCursor; *ppCursor = mEnvelopeCursor.get();
} }
void TrackPanel::HandleCenterFrequencyClick void TrackPanel::HandleCenterFrequencyClick
@ -1832,7 +1803,7 @@ void TrackPanel::SetCursorAndTipWhenSelectTool( Track * t,
{ {
// Do not set the default cursor here and re-set later, that causes // Do not set the default cursor here and re-set later, that causes
// flashing. // flashing.
*ppCursor = mSelectCursor; *ppCursor = mSelectCursor.get();
//In Multi-tool mode, give multitool prompt if no-special-hit. //In Multi-tool mode, give multitool prompt if no-special-hit.
if( bMultiToolMode ) { if( bMultiToolMode ) {
@ -1880,7 +1851,7 @@ void TrackPanel::SetCursorAndTipWhenSelectTool( Track * t,
isSpectralSelectionTrack(t)) { isSpectralSelectionTrack(t)) {
// Not shift-down, but center frequency snapping toggle is on // Not shift-down, but center frequency snapping toggle is on
tip = _("Click and drag to set frequency bandwidth."); tip = _("Click and drag to set frequency bandwidth.");
*ppCursor = mEnvelopeCursor; *ppCursor = mEnvelopeCursor.get();
return; return;
} }
#endif #endif
@ -1906,7 +1877,7 @@ void TrackPanel::SetCursorAndTipWhenSelectTool( Track * t,
case SBRight: case SBRight:
if ( HitTestStretch(t, rect, event)) { if ( HitTestStretch(t, rect, event)) {
tip = _("Click and drag to stretch within selected region."); tip = _("Click and drag to stretch within selected region.");
*ppCursor = mStretchCursor; *ppCursor = mStretchCursor.get();
return; return;
} }
break; break;
@ -1927,27 +1898,27 @@ void TrackPanel::SetCursorAndTipWhenSelectTool( Track * t,
break; break;
case SBLeft: case SBLeft:
tip = _("Click and drag to move left selection boundary."); tip = _("Click and drag to move left selection boundary.");
*ppCursor = mAdjustLeftSelectionCursor; *ppCursor = mAdjustLeftSelectionCursor.get();
return; return;
case SBRight: case SBRight:
tip = _("Click and drag to move right selection boundary."); tip = _("Click and drag to move right selection boundary.");
*ppCursor = mAdjustRightSelectionCursor; *ppCursor = mAdjustRightSelectionCursor.get();
return; return;
#ifdef EXPERIMENTAL_SPECTRAL_EDITING #ifdef EXPERIMENTAL_SPECTRAL_EDITING
case SBBottom: case SBBottom:
tip = _("Click and drag to move bottom selection frequency."); tip = _("Click and drag to move bottom selection frequency.");
*ppCursor = mBottomFrequencyCursor; *ppCursor = mBottomFrequencyCursor.get();
return; return;
case SBTop: case SBTop:
tip = _("Click and drag to move top selection frequency."); tip = _("Click and drag to move top selection frequency.");
*ppCursor = mTopFrequencyCursor; *ppCursor = mTopFrequencyCursor.get();
return; return;
case SBCenter: case SBCenter:
HandleCenterFrequencyCursor(bShiftDown, tip, ppCursor); HandleCenterFrequencyCursor(bShiftDown, tip, ppCursor);
return; return;
case SBWidth: case SBWidth:
tip = _("Click and drag to adjust frequency bandwidth."); tip = _("Click and drag to adjust frequency bandwidth.");
*ppCursor = mBandWidthCursor; *ppCursor = mBandWidthCursor.get();
return; return;
#endif #endif
default: default:

View File

@ -819,31 +819,20 @@ protected:
int mLogMaxScrubSpeed; int mLogMaxScrubSpeed;
#endif #endif
wxCursor *mArrowCursor; std::unique_ptr<wxCursor>
wxCursor *mPencilCursor; mArrowCursor, mPencilCursor, mSelectCursor,
wxCursor *mSelectCursor; mResizeCursor, mSlideCursor, mEnvelopeCursor, // doubles as the center frequency cursor
wxCursor *mResizeCursor;
wxCursor *mSlideCursor;
wxCursor *mEnvelopeCursor; // doubles as the center frequency cursor
// for spectral selection // for spectral selection
wxCursor *mSmoothCursor; mSmoothCursor, mZoomInCursor, mZoomOutCursor,
wxCursor *mZoomInCursor; mLabelCursorLeft, mLabelCursorRight, mRearrangeCursor,
wxCursor *mZoomOutCursor; mDisabledCursor, mAdjustLeftSelectionCursor, mAdjustRightSelectionCursor;
wxCursor *mLabelCursorLeft;
wxCursor *mLabelCursorRight;
wxCursor *mRearrangeCursor;
wxCursor *mDisabledCursor;
wxCursor *mAdjustLeftSelectionCursor;
wxCursor *mAdjustRightSelectionCursor;
#ifdef EXPERIMENTAL_SPECTRAL_EDITING #ifdef EXPERIMENTAL_SPECTRAL_EDITING
wxCursor *mBottomFrequencyCursor; std::unique_ptr<wxCursor>
wxCursor *mTopFrequencyCursor; mBottomFrequencyCursor, mTopFrequencyCursor, mBandWidthCursor;
wxCursor *mBandWidthCursor;
#endif #endif
#if USE_MIDI #if USE_MIDI
wxCursor *mStretchCursor; std::unique_ptr<wxCursor>
wxCursor *mStretchLeftCursor; mStretchCursor, mStretchLeftCursor, mStretchRightCursor;
wxCursor *mStretchRightCursor;
#endif #endif
wxMenu *mWaveTrackMenu; wxMenu *mWaveTrackMenu;