From 77963d9ff8a6967b799a3e18ec8a6b8e9499a7fb Mon Sep 17 00:00:00 2001 From: Jon Evans Date: Wed, 8 Jan 2025 08:43:28 -0500 Subject: [PATCH] Don't auto-save local settings when migrating Fixes https://gitlab.com/kicad/code/kicad/-/issues/19540 (cherry picked from commit 7ce0f55305aa4c3bb7450403305023e9ec2d0026) --- common/project/project_local_settings.cpp | 6 +++++- eeschema/sch_edit_frame.cpp | 1 + include/project/project_local_settings.h | 7 +++++++ pcbnew/pcb_edit_frame.cpp | 5 ++++- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/common/project/project_local_settings.cpp b/common/project/project_local_settings.cpp index f4a6c61580..8d8baebddc 100644 --- a/common/project/project_local_settings.cpp +++ b/common/project/project_local_settings.cpp @@ -42,7 +42,8 @@ PROJECT_LOCAL_SETTINGS::PROJECT_LOCAL_SETTINGS( PROJECT* aProject, const wxStrin m_ZoneOpacity( 0.6 ), m_ImageOpacity( 0.6 ), m_SelectionFilter(), - m_project( aProject ) + m_project( aProject ), + m_wasMigrated( false ) { // Keep old files around m_deleteLegacyAfterMigration = false; @@ -275,6 +276,8 @@ PROJECT_LOCAL_SETTINGS::PROJECT_LOCAL_SETTINGS( PROJECT* aProject, const wxStrin { At( "board" ).erase( "visible_items" ); } + + m_wasMigrated = true; } return true; @@ -333,6 +336,7 @@ PROJECT_LOCAL_SETTINGS::PROJECT_LOCAL_SETTINGS( PROJECT* aProject, const wxStrin } At( "board" )["visible_items"] = visible; + m_wasMigrated = true; } return true; diff --git a/eeschema/sch_edit_frame.cpp b/eeschema/sch_edit_frame.cpp index aea1bf028b..160861c0d7 100644 --- a/eeschema/sch_edit_frame.cpp +++ b/eeschema/sch_edit_frame.cpp @@ -94,6 +94,7 @@ #include #include #include +#include #define DIFF_SYMBOLS_DIALOG_NAME wxT( "DiffSymbolsDialog" ) diff --git a/include/project/project_local_settings.h b/include/project/project_local_settings.h index 09491b207c..03e6194ed5 100644 --- a/include/project/project_local_settings.h +++ b/include/project/project_local_settings.h @@ -71,6 +71,11 @@ public: void ClearFileState(); + /** + * @return true if the local settings needed to be migrated, and shouldn't be auto-saved + */ + bool WasMigrated() const { return m_wasMigrated; } + protected: wxString getFileExt() const override { @@ -144,6 +149,8 @@ public: private: /// A link to the owning project PROJECT* m_project; + + bool m_wasMigrated; }; #endif diff --git a/pcbnew/pcb_edit_frame.cpp b/pcbnew/pcb_edit_frame.cpp index f17734c3db..265d7bb49d 100644 --- a/pcbnew/pcb_edit_frame.cpp +++ b/pcbnew/pcb_edit_frame.cpp @@ -1168,7 +1168,10 @@ void PCB_EDIT_FRAME::doCloseWindow() } // Make sure local settings are persisted - SaveProjectLocalSettings(); + if( !Prj().GetLocalSettings().WasMigrated() ) + SaveProjectLocalSettings(); + else + wxLogTrace( traceAutoSave, wxT( "Skipping auto-save of migrated local settings" ) ); // Do not show the layer manager during closing to avoid flicker // on some platforms (Windows) that generate useless redraw of items in