From 781fb0ad0d20be9ea2454eb9101377e43e8aeacb Mon Sep 17 00:00:00 2001 From: Jon Evans Date: Thu, 19 Aug 2021 20:50:41 -0400 Subject: [PATCH] Fix loading of auxiliary projects Projects list wasn't being used properly to track active Prj Fixes https://gitlab.com/kicad/code/kicad/-/issues/8998 --- common/settings/settings_manager.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/common/settings/settings_manager.cpp b/common/settings/settings_manager.cpp index 7eb71b65af..14ba692ecd 100644 --- a/common/settings/settings_manager.cpp +++ b/common/settings/settings_manager.cpp @@ -779,6 +779,15 @@ bool SETTINGS_MANAGER::LoadProject( const wxString& aFullPath, bool aSetActive ) PROJECT* oldProject = m_projects.begin()->second; unloadProjectFile( oldProject, false ); m_projects.erase( m_projects.begin() ); + + auto it = std::find_if( m_projects_list.begin(), m_projects_list.end(), + [&]( const std::unique_ptr& ptr ) + { + return ptr.get() == oldProject; + } ); + + wxASSERT( it != m_projects_list.end() ); + m_projects_list.erase( it ); } wxLogTrace( traceSettings, "Load project %s", fullPath ); @@ -859,8 +868,8 @@ bool SETTINGS_MANAGER::UnloadProject( PROJECT* aProject, bool aSave ) PROJECT& SETTINGS_MANAGER::Prj() const { // No MDI yet: First project in the list is the active project - wxASSERT_MSG( m_projects.size(), "no project in list" ); - return *m_projects.begin()->second; + wxASSERT_MSG( m_projects_list.size(), "no project in list" ); + return *m_projects_list.begin()->get(); }