7
mirror of https://gitlab.com/kicad/code/kicad.git synced 2025-04-21 18:33:45 +00:00

Read hotkeys from disk after they change.

(Otherwise we'll write the old versions back out
when closing one app.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19612
This commit is contained in:
Jeff Young 2025-02-01 20:00:40 +00:00
parent ada1a9b054
commit 8874f137fa
39 changed files with 74 additions and 72 deletions

View File

@ -634,12 +634,12 @@ void EDA_3D_VIEWER_FRAME::SaveSettings( APP_SETTINGS_BASE *aCfg )
}
void EDA_3D_VIEWER_FRAME::CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged )
void EDA_3D_VIEWER_FRAME::CommonSettingsChanged( int aFlags )
{
wxLogTrace( m_logTrace, wxT( "EDA_3D_VIEWER_FRAME::CommonSettingsChanged" ) );
// Regen menu bars, etc
EDA_BASE_FRAME::CommonSettingsChanged( aEnvVarsChanged, aTextVarsChanged );
EDA_BASE_FRAME::CommonSettingsChanged( aFlags );
// There is no base class that handles toolbars for this frame
ReCreateMainToolbar();

View File

@ -114,7 +114,7 @@ public:
* This would be private (and only called by the Kiway), but we need to do this manually
* from the PCB frame because the 3D viewer isn't updated via the #KIWAY.
*/
void CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged ) override;
void CommonSettingsChanged( int aFlags ) override;
void ShowChangedLanguage() override;
APPEARANCE_CONTROLS_3D* GetAppearanceManager() { return m_appearancePanel; }

View File

@ -555,9 +555,9 @@ void EDA_BASE_FRAME::ShowChangedLanguage()
}
void EDA_BASE_FRAME::CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged )
void EDA_BASE_FRAME::CommonSettingsChanged( int aFlags )
{
TOOLS_HOLDER::CommonSettingsChanged( aEnvVarsChanged, aTextVarsChanged );
TOOLS_HOLDER::CommonSettingsChanged( aFlags );
COMMON_SETTINGS* settings = Pgm().GetCommonSettings();
@ -791,7 +791,7 @@ void EDA_BASE_FRAME::LoadWindowSettings( const WINDOW_SETTINGS* aCfg )
m_perspective = aCfg->perspective;
m_mruPath = aCfg->mru_path;
TOOLS_HOLDER::CommonSettingsChanged( false, false );
TOOLS_HOLDER::CommonSettingsChanged();
}
@ -1288,7 +1288,7 @@ void EDA_BASE_FRAME::ShowPreferences( wxString aStartPage, wxString aStartParent
// Update our grids that are cached in the tool
m_toolManager->ResetTools( TOOL_BASE::REDRAW );
Pgm().GetSettingsManager().Save();
dlg.Kiway().CommonSettingsChanged( false, false );
dlg.Kiway().CommonSettingsChanged( HOTKEYS_CHANGED );
}
}

View File

@ -293,9 +293,9 @@ void EDA_DRAW_FRAME::ToggleUserUnits()
}
void EDA_DRAW_FRAME::CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged )
void EDA_DRAW_FRAME::CommonSettingsChanged( int aFlags )
{
EDA_BASE_FRAME::CommonSettingsChanged( aEnvVarsChanged, aTextVarsChanged );
EDA_BASE_FRAME::CommonSettingsChanged( aFlags );
COMMON_SETTINGS* settings = Pgm().GetCommonSettings();
KIGFX::VIEW_CONTROLS* viewControls = GetCanvas()->GetViewControls();

View File

@ -614,7 +614,7 @@ void KIWAY::SetLanguage( int aLanguage )
}
void KIWAY::CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged )
void KIWAY::CommonSettingsChanged( int aFlags )
{
if( m_ctl & KFCTL_CPP_PROJECT_SUITE )
{
@ -624,7 +624,7 @@ void KIWAY::CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged )
EDA_BASE_FRAME* top = static_cast<EDA_BASE_FRAME*>( m_top );
if( top )
top->CommonSettingsChanged( aEnvVarsChanged, aTextVarsChanged );
top->CommonSettingsChanged( aFlags );
}
for( unsigned i=0; i < KIWAY_PLAYER_COUNT; ++i )
@ -632,7 +632,7 @@ void KIWAY::CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged )
KIWAY_PLAYER* frame = GetPlayerFrame( ( FRAME_T )i );
if( frame )
frame->CommonSettingsChanged( aEnvVarsChanged, aTextVarsChanged );
frame->CommonSettingsChanged( aFlags );
}
}

View File

@ -282,14 +282,14 @@ int ACTION_MANAGER::GetHotKey( const TOOL_ACTION& aAction ) const
void ACTION_MANAGER::UpdateHotKeys( bool aFullUpdate )
{
static std::map<std::string, int> legacyHotKeyMap;
static std::map<std::string, int> legacyHotKeyMap;
static std::map<std::string, std::pair<int, int>> userHotKeyMap;
static bool mapsInitialized = false;
static bool mapsInitialized = false;
m_actionHotKeys.clear();
m_hotkeys.clear();
if( aFullUpdate && !mapsInitialized && m_toolMgr->GetToolHolder() )
if( m_toolMgr->GetToolHolder() && ( aFullUpdate || !mapsInitialized ) )
{
ReadLegacyHotkeyConfig( m_toolMgr->GetToolHolder()->ConfigBaseName(), legacyHotKeyMap );
ReadHotKeyConfig( wxEmptyString, userHotKeyMap );

View File

@ -95,7 +95,7 @@ int COMMON_CONTROL::ConfigurePaths( const TOOL_EVENT& aEvent )
DIALOG_CONFIGURE_PATHS dlg( m_frame );
if( dlg.ShowModal() == wxID_OK )
m_frame->Kiway().CommonSettingsChanged( true, false );
m_frame->Kiway().CommonSettingsChanged( ENVVARS_CHANGED );
}
return 0;

View File

@ -150,10 +150,10 @@ void TOOLS_HOLDER::ShowChangedLanguage()
}
void TOOLS_HOLDER::CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged )
void TOOLS_HOLDER::CommonSettingsChanged( int aFlags )
{
if( GetToolManager() )
GetToolManager()->GetActionManager()->UpdateHotKeys( false );
GetToolManager()->GetActionManager()->UpdateHotKeys( aFlags & HOTKEYS_CHANGED );
COMMON_SETTINGS* settings = Pgm().GetCommonSettings();

View File

@ -141,7 +141,7 @@ void SCH_EDIT_FRAME::ShowSchematicSetupDialog( const wxString& aInitialPage )
// Mark document as modified so that project settings can be saved as part of doc save
OnModify();
Kiway().CommonSettingsChanged( false, true );
Kiway().CommonSettingsChanged( TEXTVARS_CHANGED );
Prj().IncrementTextVarsTicker();
Prj().IncrementNetclassesTicker();

View File

@ -513,9 +513,9 @@ COLOR4D SCH_BASE_FRAME::GetLayerColor( SCH_LAYER_ID aLayer )
}
void SCH_BASE_FRAME::CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged )
void SCH_BASE_FRAME::CommonSettingsChanged( int aFlags )
{
EDA_DRAW_FRAME::CommonSettingsChanged( aEnvVarsChanged, aTextVarsChanged );
EDA_DRAW_FRAME::CommonSettingsChanged( aFlags );
COLOR_SETTINGS* colorSettings = GetColorSettings( true );

View File

@ -234,7 +234,7 @@ public:
*/
void SyncView();
void CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged ) override;
void CommonSettingsChanged( int aFlags ) override;
/**
* Helper to retrieve a layer color from the global color settings

View File

@ -2132,9 +2132,9 @@ std::unique_ptr<GRID_HELPER> SCH_EDIT_FRAME::MakeGridHelper()
}
void SCH_EDIT_FRAME::CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged )
void SCH_EDIT_FRAME::CommonSettingsChanged( int aFlags )
{
SCH_BASE_FRAME::CommonSettingsChanged( aEnvVarsChanged, aTextVarsChanged );
SCH_BASE_FRAME::CommonSettingsChanged( aFlags );
SCHEMATIC_SETTINGS& settings = Schematic().Settings();

View File

@ -829,7 +829,7 @@ public:
/**
* Called after the preferences dialog is run.
*/
void CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged ) override;
void CommonSettingsChanged( int aFlags ) override;
void UpdateNetHighlightStatus();

View File

@ -276,9 +276,9 @@ void SIMULATOR_FRAME::SaveSettings( APP_SETTINGS_BASE* aCfg )
}
void SIMULATOR_FRAME::CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged )
void SIMULATOR_FRAME::CommonSettingsChanged( int aFlags )
{
KIWAY_PLAYER::CommonSettingsChanged( aEnvVarsChanged, aTextVarsChanged );
KIWAY_PLAYER::CommonSettingsChanged( aFlags );
auto* cfg = dynamic_cast<EESCHEMA_SETTINGS*>( m_toolManager->GetSettings() );
wxASSERT( cfg != nullptr );

View File

@ -162,7 +162,7 @@ public:
void SaveSettings( APP_SETTINGS_BASE* aCfg ) override;
void CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged ) override;
void CommonSettingsChanged( int aFlags ) override;
WINDOW_SETTINGS* GetWindowSettings( APP_SETTINGS_BASE* aCfg ) override;

View File

@ -68,7 +68,7 @@ public:
WINDOW_SETTINGS* GetWindowSettings( APP_SETTINGS_BASE* aCfg ) override;
void CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged ) override;
void CommonSettingsChanged( int aFlags ) override;
const BOX2I GetDocumentExtents( bool aIncludeAllVisible = true ) const override;

View File

@ -1336,9 +1336,9 @@ void SYMBOL_EDIT_FRAME::emptyScreen()
}
void SYMBOL_EDIT_FRAME::CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged )
void SYMBOL_EDIT_FRAME::CommonSettingsChanged( int aFlags )
{
SCH_BASE_FRAME::CommonSettingsChanged( aEnvVarsChanged, aTextVarsChanged );
SCH_BASE_FRAME::CommonSettingsChanged( aFlags );
SETTINGS_MANAGER* mgr = GetSettingsManager();
SYMBOL_EDITOR_SETTINGS* cfg = mgr->GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
@ -1360,7 +1360,7 @@ void SYMBOL_EDIT_FRAME::CommonSettingsChanged( bool aEnvVarsChanged, bool aTextV
RecreateToolbars();
if( aEnvVarsChanged )
if( aFlags & ENVVARS_CHANGED )
SyncLibraries( true );
Layout();

View File

@ -361,7 +361,7 @@ public:
/**
* Called after the preferences dialog is run.
*/
void CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged ) override;
void CommonSettingsChanged( int aFlags ) override;
void ShowChangedLanguage() override;

View File

@ -901,9 +901,9 @@ WINDOW_SETTINGS* SYMBOL_VIEWER_FRAME::GetWindowSettings( APP_SETTINGS_BASE* aCfg
}
void SYMBOL_VIEWER_FRAME::CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged )
void SYMBOL_VIEWER_FRAME::CommonSettingsChanged( int aFlags )
{
SCH_BASE_FRAME::CommonSettingsChanged( aEnvVarsChanged, aTextVarsChanged );
SCH_BASE_FRAME::CommonSettingsChanged( aFlags );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
@ -913,7 +913,7 @@ void SYMBOL_VIEWER_FRAME::CommonSettingsChanged( bool aEnvVarsChanged, bool aTex
GetCanvas()->GetGAL()->DrawGrid();
GetCanvas()->ForceRefresh();
if( aEnvVarsChanged )
if( aFlags && ENVVARS_CHANGED )
ReCreateLibList();
}

View File

@ -87,7 +87,7 @@ public:
WINDOW_SETTINGS* GetWindowSettings( APP_SETTINGS_BASE* aCfg ) override;
void CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged ) override;
void CommonSettingsChanged( int aFlags ) override;
/**
* Set the selected library in the library window.

View File

@ -1210,9 +1210,9 @@ void GERBVIEW_FRAME::setupUIConditions()
}
void GERBVIEW_FRAME::CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged )
void GERBVIEW_FRAME::CommonSettingsChanged( int aFlags )
{
EDA_DRAW_FRAME::CommonSettingsChanged( aEnvVarsChanged, aTextVarsChanged );
EDA_DRAW_FRAME::CommonSettingsChanged( aFlags );
// Update gal display options like cursor shape, grid options:
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();

View File

@ -376,7 +376,7 @@ public:
/**
* Called after the preferences dialog is run.
*/
void CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged ) override;
void CommonSettingsChanged( int aFlags ) override;
SELECTION& GetCurrentSelection() override;

View File

@ -498,7 +498,7 @@ public:
* Notification event that some of the common (suite-wide) settings have changed.
* Update menus, toolbars, local variables, etc.
*/
void CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged ) override;
void CommonSettingsChanged( int aFlags ) override;
/**
* Process light/dark theme change.

View File

@ -196,7 +196,7 @@ public:
const wxString& ext, bool isDirectory = false, bool aIsGlobal = false,
const wxString& aGlobalPath = wxEmptyString );
void CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged ) override;
void CommonSettingsChanged( int aFlags ) override;
virtual wxString GetScreenDesc() const;
virtual wxString GetFullScreenDesc() const;

View File

@ -401,7 +401,7 @@ public:
*
* Use after changing suite-wide options such as panning, autosave interval, etc.
*/
virtual void CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged );
virtual void CommonSettingsChanged( int aFlags );
/**
* Calls ProjectChanged() on all KIWAY_PLAYERs.

Some files were not shown because too many files have changed in this diff Show More