mirror of
https://github.com/cookiengineer/audacity
synced 2025-10-10 16:43:33 +02:00
Win: assertions on project close shouldn't crash displaying the dialog (#629)
This commit is contained in:
@@ -225,6 +225,8 @@ struct ScrubForwarder
|
|||||||
mWindow = &ProjectWindow::Get( project );
|
mWindow = &ProjectWindow::Get( project );
|
||||||
if ( mWindow )
|
if ( mWindow )
|
||||||
mWindow->PushEventHandler( this );
|
mWindow->PushEventHandler( this );
|
||||||
|
mRuler = &AdornedRulerPanel::Get( project );
|
||||||
|
mScrubber = Scrubber::Get( project ).shared_from_this();
|
||||||
}
|
}
|
||||||
|
|
||||||
~ScrubForwarder()
|
~ScrubForwarder()
|
||||||
@@ -235,6 +237,8 @@ struct ScrubForwarder
|
|||||||
|
|
||||||
AudacityProject &mProject;
|
AudacityProject &mProject;
|
||||||
wxWindowPtr<wxWindow> mWindow;
|
wxWindowPtr<wxWindow> mWindow;
|
||||||
|
wxWeakRef<AdornedRulerPanel> mRuler;
|
||||||
|
std::weak_ptr<Scrubber> mScrubber;
|
||||||
|
|
||||||
void OnMouse(wxMouseEvent &event);
|
void OnMouse(wxMouseEvent &event);
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
@@ -242,9 +246,15 @@ struct ScrubForwarder
|
|||||||
|
|
||||||
void ScrubForwarder::OnMouse(wxMouseEvent &event)
|
void ScrubForwarder::OnMouse(wxMouseEvent &event)
|
||||||
{
|
{
|
||||||
auto &scrubber = Scrubber::Get( mProject );
|
auto pScrubber = mScrubber.lock();
|
||||||
|
if ( !pScrubber || !mRuler ) {
|
||||||
|
event.Skip();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
auto &ruler = AdornedRulerPanel::Get( mProject );
|
auto &scrubber = *pScrubber;
|
||||||
|
|
||||||
|
auto &ruler = *mRuler;
|
||||||
const auto &state = ::wxGetMouseState();
|
const auto &state = ::wxGetMouseState();
|
||||||
const auto &position = state.GetPosition();
|
const auto &position = state.GetPosition();
|
||||||
scrubber.SetMayDragToSeek(
|
scrubber.SetMayDragToSeek(
|
||||||
|
@@ -42,6 +42,7 @@ class Scrubber final
|
|||||||
: public wxEvtHandler
|
: public wxEvtHandler
|
||||||
, public ClientData::Base
|
, public ClientData::Base
|
||||||
, private PrefsListener
|
, private PrefsListener
|
||||||
|
, public std::enable_shared_from_this< Scrubber >
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static Scrubber &Get( AudacityProject &project );
|
static Scrubber &Get( AudacityProject &project );
|
||||||
|
Reference in New Issue
Block a user