1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-29 06:38:38 +02:00

ScrubbingToolBar consumes less idle time

This commit is contained in:
Paul Licameli 2019-07-07 12:20:59 -04:00
parent e03c9cdee3
commit 9b98f4be0c
2 changed files with 51 additions and 27 deletions

View File

@ -142,6 +142,11 @@ void ScrubbingToolBar::UpdatePrefs()
}
void ScrubbingToolBar::RegenerateTooltips()
{
DoRegenerateTooltips( true );
}
void ScrubbingToolBar::DoRegenerateTooltips( bool force )
{
#if wxUSE_TOOLTIPS
auto fn = [&]
@ -159,34 +164,46 @@ void ScrubbingToolBar::RegenerateTooltips()
const auto seekButton = mButtons[STBSeekID];
wxString label;
label = (
scrubber.Scrubs()
/* i18n-hint: These commands assist the user in finding a sound by ear. ...
"Scrubbing" is variable-speed playback, ...
"Seeking" is normal speed playback but with skips
*/
? _("Stop Scrubbing")
: _("Start Scrubbing")
);
fn(*scrubButton, label, wxT("Scrub"));
bool scrubs = scrubber.Scrubs();
if (force || mLastScrub != scrubs) {
label = (
scrubs
/* i18n-hint: These commands assist the user in finding a sound by ear. ...
"Scrubbing" is variable-speed playback, ...
"Seeking" is normal speed playback but with skips
*/
? _("Stop Scrubbing")
: _("Start Scrubbing")
);
fn(*scrubButton, label, wxT("Scrub"));
}
mLastScrub = scrubs;
label = (
scrubber.Seeks()
/* i18n-hint: These commands assist the user in finding a sound by ear. ...
"Scrubbing" is variable-speed playback, ...
"Seeking" is normal speed playback but with skips
*/
? _("Stop Seeking")
: _("Start Seeking")
);
fn(*seekButton, label, wxT("Seek"));
bool seeks = scrubber.Seeks();
if (force || mLastSeek != seeks) {
label = (
seeks
/* i18n-hint: These commands assist the user in finding a sound by ear. ...
"Scrubbing" is variable-speed playback, ...
"Seeking" is normal speed playback but with skips
*/
? _("Stop Seeking")
: _("Start Seeking")
);
fn(*seekButton, label, wxT("Seek"));
}
mLastSeek = seeks;
label = (
AdornedRulerPanel::Get( *project ).ShowingScrubRuler()
? _("Hide Scrub Ruler")
: _("Show Scrub Ruler")
);
fn(*mButtons[STBRulerID], label, wxT("ToggleScrubRuler"));
bool showingRuler = AdornedRulerPanel::Get( *project ).ShowingScrubRuler();
if (force || mLastRuler != showingRuler) {
label = (
showingRuler
? _("Hide Scrub Ruler")
: _("Show Scrub Ruler")
);
fn(*mButtons[STBRulerID], label, wxT("ToggleScrubRuler"));
}
mLastRuler = showingRuler;
}
#endif
}
@ -256,7 +273,7 @@ void ScrubbingToolBar::EnableDisableButtons()
barButton->PushDown();
else
barButton->PopUp();
RegenerateTooltips();
DoRegenerateTooltips( false );
scrubber.CheckMenuItems();
}

View File

@ -78,6 +78,13 @@ public:
DECLARE_CLASS(ScrubbingToolBar)
DECLARE_EVENT_TABLE()
private:
void DoRegenerateTooltips( bool force );
bool mLastScrub{ false };
bool mLastSeek{ false };
bool mLastRuler{ false };
};
#endif