diff --git a/src/commands/CommandFunctors.h b/src/commands/CommandFunctors.h index 2611485fb..85882ff6f 100644 --- a/src/commands/CommandFunctors.h +++ b/src/commands/CommandFunctors.h @@ -86,24 +86,6 @@ private: const audCommandKeyFunction mCommandKeyFunction; }; -// This allows functions to be used either by command manager or by a wxMenu popup, -// but the functions MUST ignore the argument! -template -using audCommandPopupFunction = void (OBJ::*)(wxCommandEvent&); - -template -class PopupFunctor final : public CommandFunctor -{ -public: - explicit PopupFunctor(OBJ *This, audCommandPopupFunction pfn) - : mThis{ This }, mCommandPopupFunction{ pfn } {} - void operator () (const CommandContext &context) override - { wxCommandEvent dummy; (mThis->*mCommandPopupFunction) (dummy); } -private: - OBJ *const mThis; - const audCommandPopupFunction mCommandPopupFunction; -}; - template using audCommandListFunction = void (OBJ::*)(int); @@ -150,11 +132,6 @@ inline CommandFunctorPointer MakeFunctor(OBJ *This, audCommandKeyFunction pfn) { return CommandFunctorPointer{ safenew KeyFunctor{ This, pfn } }; } -template -inline CommandFunctorPointer MakeFunctor(OBJ *This, - audCommandPopupFunction pfn) -{ return CommandFunctorPointer{ safenew PopupFunctor{ This, pfn } }; } - template inline CommandFunctorPointer MakeFunctor(OBJ *This, audCommandListFunction pfn) diff --git a/src/toolbars/ScrubbingToolBar.cpp b/src/toolbars/ScrubbingToolBar.cpp index fd11f41e5..ac39df4e8 100644 --- a/src/toolbars/ScrubbingToolBar.cpp +++ b/src/toolbars/ScrubbingToolBar.cpp @@ -193,13 +193,13 @@ void ScrubbingToolBar::OnButton(wxCommandEvent &event) switch (id) { case STBScrubID: - scrubber.OnScrub(event); + scrubber.OnScrub(); break; case STBSeekID: - scrubber.OnSeek(event); + scrubber.OnSeek(); break; case STBRulerID: - scrubber.OnToggleScrubRuler(event); + scrubber.OnToggleScrubRuler(); break; default: wxASSERT(false); diff --git a/src/tracks/ui/Scrubbing.cpp b/src/tracks/ui/Scrubbing.cpp index fd8fea2de..a14b77825 100644 --- a/src/tracks/ui/Scrubbing.cpp +++ b/src/tracks/ui/Scrubbing.cpp @@ -224,7 +224,7 @@ namespace { wxString label; wxString status; CommandFlag flags; - void (Scrubber::*memFn)(wxCommandEvent&); + void (Scrubber::*memFn)(); bool seek; bool (Scrubber::*StatusTest)() const; @@ -921,19 +921,19 @@ void Scrubber::OnScrubOrSeek(bool seek) scrubbingToolBar->RegenerateTooltips(); } -void Scrubber::OnScrub(wxCommandEvent&) +void Scrubber::OnScrub() { OnScrubOrSeek(false); CheckMenuItems(); } -void Scrubber::OnSeek(wxCommandEvent&) +void Scrubber::OnSeek() { OnScrubOrSeek(true); CheckMenuItems(); } -void Scrubber::OnToggleScrubRuler(wxCommandEvent&) +void Scrubber::OnToggleScrubRuler() { mProject->GetRulerPanel()->OnToggleScrubRuler(); const auto toolbar = mProject->GetToolManager()->GetToolBar(ScrubbingBarID); @@ -943,10 +943,12 @@ void Scrubber::OnToggleScrubRuler(wxCommandEvent&) enum { CMD_ID = 8000 }; +#define THUNK(Name) Scrubber::Thunk<&Scrubber::Name> + BEGIN_EVENT_TABLE(Scrubber, wxEvtHandler) - EVT_MENU(CMD_ID, Scrubber::OnScrub) - EVT_MENU(CMD_ID + 1, Scrubber::OnSeek) - EVT_MENU(CMD_ID + 2, Scrubber::OnToggleScrubRuler) + EVT_MENU(CMD_ID, THUNK(OnScrub)) + EVT_MENU(CMD_ID + 1, THUNK(OnSeek)) + EVT_MENU(CMD_ID + 2, THUNK(OnToggleScrubRuler)) END_EVENT_TABLE() BEGIN_EVENT_TABLE(Scrubber::Forwarder, wxEvtHandler) diff --git a/src/tracks/ui/Scrubbing.h b/src/tracks/ui/Scrubbing.h index 66538f5f7..a8e72a663 100644 --- a/src/tracks/ui/Scrubbing.h +++ b/src/tracks/ui/Scrubbing.h @@ -123,9 +123,13 @@ public: void PopulatePopupMenu(wxMenu &menu); void OnScrubOrSeek(bool seek); - void OnScrub(wxCommandEvent&); - void OnSeek(wxCommandEvent&); - void OnToggleScrubRuler(wxCommandEvent&); + void OnScrub(); + void OnSeek(); + void OnToggleScrubRuler(); + + // Convenience wrapper for the above + template void Thunk(wxCommandEvent &dummy) + { (this->*pfn)(); } // A string to put in the leftmost part of the status bar // when scrub or seek is in progress, or else empty. diff --git a/src/widgets/Ruler.cpp b/src/widgets/Ruler.cpp index 2bbcf43ef..51a32d107 100644 --- a/src/widgets/Ruler.cpp +++ b/src/widgets/Ruler.cpp @@ -2845,10 +2845,10 @@ void AdornedRulerPanel::UpdateStatusBarAndTooltips(StatusChoice choice) // This version toggles ruler state indirectly via the scrubber // to ensure that all the places where the state is shown update. // For example buttons and menus must update. -void AdornedRulerPanel::OnToggleScrubRulerFromMenu(wxCommandEvent& Evt) +void AdornedRulerPanel::OnToggleScrubRulerFromMenu(wxCommandEvent&) { auto &scrubber = mProject->GetScrubber(); - scrubber.OnToggleScrubRuler( Evt ); + scrubber.OnToggleScrubRuler( ); } void AdornedRulerPanel::OnToggleScrubRuler(/*wxCommandEvent&*/)