From 192530d8a5024db64a6f6e4c3129a3127c588c7d Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Mon, 1 Jul 2019 08:11:25 -0400 Subject: [PATCH] Free ScrubbingToolBar from cycles... ... by having it update itself in idle time, not needing a push from Scrubber Shrinking that remnant of the big strongly connected component to 6 --- src/toolbars/ScrubbingToolBar.cpp | 8 +++++++- src/toolbars/ScrubbingToolBar.h | 2 ++ src/tracks/ui/Scrubbing.cpp | 5 ----- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/toolbars/ScrubbingToolBar.cpp b/src/toolbars/ScrubbingToolBar.cpp index 988fe1103..4fe092ec7 100644 --- a/src/toolbars/ScrubbingToolBar.cpp +++ b/src/toolbars/ScrubbingToolBar.cpp @@ -52,6 +52,7 @@ EVT_COMMAND_RANGE( STBFirstButton, STBFirstButton + STBNumButtons - 1, wxEVT_COMMAND_BUTTON_CLICKED, ScrubbingToolBar::OnButton ) +EVT_IDLE( ScrubbingToolBar::OnIdle ) END_EVENT_TABLE() //Standard contructor @@ -223,7 +224,6 @@ void ScrubbingToolBar::EnableDisableButtons() seekButton->SetEnabled(true); AudacityProject *p = &mProject; - if (!p) return; auto &scrubber = Scrubber::Get( *p ); const auto canScrub = scrubber.CanScrub(); @@ -262,6 +262,12 @@ void ScrubbingToolBar::EnableDisableButtons() scrubber.CheckMenuItems(); } +void ScrubbingToolBar::OnIdle( wxIdleEvent &evt ) +{ + evt.Skip(); + EnableDisableButtons(); +} + static RegisteredToolbarFactory factory{ ScrubbingBarID, []( AudacityProject &project ){ return ToolBar::Holder{ safenew ScrubbingToolBar{ project } }; } diff --git a/src/toolbars/ScrubbingToolBar.h b/src/toolbars/ScrubbingToolBar.h index ce13a3804..fc692aea3 100644 --- a/src/toolbars/ScrubbingToolBar.h +++ b/src/toolbars/ScrubbingToolBar.h @@ -72,6 +72,8 @@ private: wxImage *downImage; wxImage *hiliteImage; + void OnIdle( wxIdleEvent &evt ); + public: DECLARE_CLASS(ScrubbingToolBar) diff --git a/src/tracks/ui/Scrubbing.cpp b/src/tracks/ui/Scrubbing.cpp index b4a2e5059..4de7ce16f 100644 --- a/src/tracks/ui/Scrubbing.cpp +++ b/src/tracks/ui/Scrubbing.cpp @@ -30,7 +30,6 @@ Paul Licameli split from TrackPanel.cpp #include "../../prefs/PlaybackPrefs.h" #include "../../prefs/TracksPrefs.h" #include "../../toolbars/ControlToolBar.h" -#include "../../toolbars/ScrubbingToolBar.h" #include "../../toolbars/ToolManager.h" #undef USE_TRANSCRIPTION_TOOLBAR @@ -1120,10 +1119,6 @@ void Scrubber::OnScrubOrSeek(bool seek) auto &ruler = AdornedRulerPanel::Get( *mProject ); // Update button images ruler.UpdateButtonStates(); - - auto scrubbingToolBar = &ScrubbingToolBar::Get( *mProject ); - scrubbingToolBar->EnableDisableButtons(); - scrubbingToolBar->RegenerateTooltips(); } void Scrubber::OnScrub(const CommandContext&)