From c52f2d3b1200df28bb4dc7af0446681ed4c274c1 Mon Sep 17 00:00:00 2001 From: "v.audacity" Date: Tue, 30 Jul 2013 00:36:57 +0000 Subject: [PATCH] Fixes for ControlToolBar tooltips with keyboard shortcuts not working correctly in some languages, and for tooltips being updated without having to exit and restart. --- src/toolbars/ControlToolBar.cpp | 29 ++++++++++++++++++++++------- src/toolbars/ControlToolBar.h | 2 ++ 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/toolbars/ControlToolBar.cpp b/src/toolbars/ControlToolBar.cpp index fa08bd859..cc75e856e 100644 --- a/src/toolbars/ControlToolBar.cpp +++ b/src/toolbars/ControlToolBar.cpp @@ -94,6 +94,7 @@ ControlToolBar::ControlToolBar() mCutPreviewTracks = NULL; gPrefs->Read(wxT("/GUI/ErgonomicTransportButtons"), &mErgonomicTransportButtons, true); + mStrLocale = gPrefs->Read(wxT("/Locale/Language"), wxT("")); } ControlToolBar::~ControlToolBar() @@ -217,23 +218,27 @@ void ControlToolBar::RegenerateToolsTooltips() switch (iWinID) { case ID_PLAY_BUTTON: - strKey += pCmdMgr->GetKeyFromName(strToolTip); + strKey += pCmdMgr->GetKeyFromName(wxT("Play")); strKey += _(") / Loop Play ("); strKey += pCmdMgr->GetKeyFromName(wxT("PlayLooped")); break; case ID_RECORD_BUTTON: - strKey += pCmdMgr->GetKeyFromName(strToolTip); + strKey += pCmdMgr->GetKeyFromName(wxT("Record")); strKey += _(") / Append Record ("); strKey += pCmdMgr->GetKeyFromName(wxT("RecordAppend")); break; + case ID_PAUSE_BUTTON: + strKey += pCmdMgr->GetKeyFromName(wxT("Pause")); + break; + case ID_STOP_BUTTON: + strKey += pCmdMgr->GetKeyFromName(wxT("Stop")); + break; case ID_FF_BUTTON: strKey += pCmdMgr->GetKeyFromName(wxT("SkipEnd")); break; case ID_REW_BUTTON: strKey += pCmdMgr->GetKeyFromName(wxT("SkipStart")); break; - default: - strKey += pCmdMgr->GetKeyFromName(strToolTip); } strKey += wxT(")"); strToolTip += strKey; @@ -248,20 +253,30 @@ void ControlToolBar::UpdatePrefs() bool updated = false; bool active; - RegenerateToolsTooltips(); - gPrefs->Read( wxT("/GUI/ErgonomicTransportButtons"), &active, true ); if( mErgonomicTransportButtons != active ) { mErgonomicTransportButtons = active; updated = true; } + wxString strLocale = gPrefs->Read(wxT("/Locale/Language"), wxT("")); + if (mStrLocale != strLocale) + { + mStrLocale = strLocale; + updated = true; + } if( updated ) { - ReCreateButtons(); + ReCreateButtons(); // side effect: calls RegenerateToolsTooltips() Updated(); } + else + // The other reason to regenerate tooltips is if keyboard shortcuts for + // transport buttons changed, but that's too much work to check for, so just + // always do it. (Much cheaper than calling ReCreateButtons() in all cases. + RegenerateToolsTooltips(); + // Set label to pull in language change SetLabel(_("Transport")); diff --git a/src/toolbars/ControlToolBar.h b/src/toolbars/ControlToolBar.h index 8ec4bc920..63fabe92b 100644 --- a/src/toolbars/ControlToolBar.h +++ b/src/toolbars/ControlToolBar.h @@ -123,6 +123,8 @@ class ControlToolBar:public ToolBar { // Activate ergonomic order for transport buttons bool mErgonomicTransportButtons; + wxString mStrLocale; // standard locale abbreviation + //wxBoxSizer *mBatchGroup; wxBoxSizer *mSizer;