Try not to forget file history and window state on a crash.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15343
This commit is contained in:
parent
b986391a04
commit
e30b05fcd0
|
@ -612,7 +612,10 @@ void KICAD_MANAGER_FRAME::LoadProject( const wxFileName& aProjectFileName )
|
||||||
if( aProjectFileName.IsDirWritable() )
|
if( aProjectFileName.IsDirWritable() )
|
||||||
SetMruPath( Prj().GetProjectPath() ); // Only set MRU path if we have write access. Why?
|
SetMruPath( Prj().GetProjectPath() ); // Only set MRU path if we have write access. Why?
|
||||||
|
|
||||||
UpdateFileHistory( Prj().GetProjectFullName() );
|
// Save history & window state to disk now. Don't wait around for a crash.
|
||||||
|
KICAD_SETTINGS* settings = kicadSettings();
|
||||||
|
SaveSettings( settings );
|
||||||
|
settings->SaveToFile( Pgm().GetSettingsManager().GetPathForSettingsFile( settings ) );
|
||||||
|
|
||||||
m_leftWin->ReCreateTreePrj();
|
m_leftWin->ReCreateTreePrj();
|
||||||
|
|
||||||
|
@ -713,7 +716,10 @@ void KICAD_MANAGER_FRAME::CreateNewProject( const wxFileName& aProjectFileName,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateFileHistory( aProjectFileName.GetFullPath() );
|
// Save history & window state to disk now. Don't wait around for a crash.
|
||||||
|
KICAD_SETTINGS* settings = kicadSettings();
|
||||||
|
SaveSettings( settings );
|
||||||
|
settings->SaveToFile( Pgm().GetSettingsManager().GetPathForSettingsFile( settings ) );
|
||||||
|
|
||||||
m_openSavedWindows = true;
|
m_openSavedWindows = true;
|
||||||
}
|
}
|
||||||
|
@ -832,6 +838,9 @@ void KICAD_MANAGER_FRAME::SaveSettings( APP_SETTINGS_BASE* aCfg )
|
||||||
wxCHECK( settings, /*void*/);
|
wxCHECK( settings, /*void*/);
|
||||||
|
|
||||||
settings->m_LeftWinWidth = m_leftWin->GetSize().x;
|
settings->m_LeftWinWidth = m_leftWin->GetSize().x;
|
||||||
|
|
||||||
|
if( !m_isClosing )
|
||||||
|
settings->m_OpenProjects = GetSettingsManager()->GetOpenProjects();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -743,6 +743,20 @@ int KICAD_MANAGER_CONTROL::ShowPlayer( const TOOL_EVENT& aEvent )
|
||||||
if( wxWindow::FindFocus() != player )
|
if( wxWindow::FindFocus() != player )
|
||||||
player->SetFocus();
|
player->SetFocus();
|
||||||
|
|
||||||
|
// Save window state to disk now. Don't wait around for a crash.
|
||||||
|
if( Pgm().GetCommonSettings()->m_Session.remember_open_files
|
||||||
|
&& !player->GetCurrentFileName().IsEmpty() )
|
||||||
|
{
|
||||||
|
wxFileName rfn( player->GetCurrentFileName() );
|
||||||
|
rfn.MakeRelativeTo( Prj().GetProjectPath() );
|
||||||
|
|
||||||
|
WINDOW_SETTINGS windowSettings;
|
||||||
|
player->SaveWindowSettings( &windowSettings );
|
||||||
|
|
||||||
|
Prj().GetLocalSettings().SaveFileState( rfn.GetFullPath(), &windowSettings, true );
|
||||||
|
Prj().GetLocalSettings().SaveToFile( Prj().GetProjectPath() );
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue