Don't create project files unconditionally when importing boards

Fixes https://gitlab.com/kicad/code/kicad/-/issues/7368
This commit is contained in:
Jon Evans 2021-02-03 19:05:46 -05:00
parent 62254309b0
commit b314e0828c
2 changed files with 14 additions and 3 deletions

View File

@ -62,15 +62,17 @@ PCB_BASE_EDIT_FRAME::~PCB_BASE_EDIT_FRAME()
void PCB_BASE_EDIT_FRAME::doCloseWindow()
{
SETTINGS_MANAGER* mgr = GetSettingsManager();
wxFileName projectName( Prj().GetProjectFullName() );
if( mgr->IsProjectOpen() && wxFileName::IsDirWritable( Prj().GetProjectPath() ) )
if( mgr->IsProjectOpen() && wxFileName::IsDirWritable( projectName.GetPath() )
&& projectName.Exists() )
{
GFootprintList.WriteCacheToFile( Prj().GetProjectPath() + "fp-info-cache" );
}
// Close the project if we are standalone, so it gets cleaned up properly
if( mgr->IsProjectOpen() && Kiface().IsSingle() )
mgr->UnloadProject( &Prj() );
mgr->UnloadProject( &Prj(), false );
}

View File

@ -227,6 +227,15 @@ void PCB_EDIT_FRAME::SaveProjectSettings()
localSettings.m_SelectionFilter = filterOpts;
if( !Prj().IsNullProject() )
/**
* The below automatically saves the project on exit, which is what we want to do if the project
* already exists. If the project doesn't already exist, we don't want to create it through
* this function call, because this will happen automatically when the user exits even if they
* didn't save a new board with a valid filename (usually an imported board).
*
* The explicit save action in PCB_EDIT_FRAME::SavePcbFile will call SaveProject directly,
* so if the user does choose to save the board, the project file will get created then.
*/
if( !Prj().IsNullProject() && fn.Exists() )
GetSettingsManager()->SaveProject();
}