diff --git a/pcbnew/files.cpp b/pcbnew/files.cpp index b9dd069f63..8d9e3f46e8 100644 --- a/pcbnew/files.cpp +++ b/pcbnew/files.cpp @@ -643,11 +643,12 @@ bool PCB_EDIT_FRAME::OpenProjectFiles( const std::vector& aFileSet, in GetBoard()->BuildConnectivity(); Compile_Ratsnest( true ); - onBoardLoaded(); - // Load project settings after setting up board; some of them depend on the nets list LoadProjectSettings(); + // Syncs the UI (appearance panel, etc) with the loaded board and project + onBoardLoaded(); + // Refresh the 3D view, if any EDA_3D_VIEWER* draw3DFrame = Get3DViewerFrame(); diff --git a/pcbnew/pcb_edit_frame.cpp b/pcbnew/pcb_edit_frame.cpp index 5c298c6cc7..fd9d279df0 100644 --- a/pcbnew/pcb_edit_frame.cpp +++ b/pcbnew/pcb_edit_frame.cpp @@ -49,6 +49,7 @@ #include #include #include +#include #include #include #include @@ -1021,6 +1022,14 @@ void PCB_EDIT_FRAME::onBoardLoaded() m_appearancePanel->OnBoardChanged(); + // Apply saved display state to the appearance panel after it has been set up + PROJECT_LOCAL_SETTINGS& localSettings = Prj().GetLocalSettings(); + + m_appearancePanel->ApplyLayerPreset( localSettings.m_ActiveLayerPreset ); + + if( GetBoard()->GetDesignSettings().IsLayerEnabled( localSettings.m_ActiveLayer ) ) + SetActiveLayer( localSettings.m_ActiveLayer ); + // Update the tracks / vias available sizes list: ReCreateAuxiliaryToolbar(); diff --git a/pcbnew/pcbnew_config.cpp b/pcbnew/pcbnew_config.cpp index 065e20f53b..a8a8e25018 100644 --- a/pcbnew/pcbnew_config.cpp +++ b/pcbnew/pcbnew_config.cpp @@ -125,7 +125,6 @@ bool PCB_EDIT_FRAME::LoadProjectSettings() } m_appearancePanel->SetUserLayerPresets( project.m_LayerPresets ); - m_appearancePanel->ApplyLayerPreset( localSettings.m_ActiveLayerPreset ); SELECTION_FILTER_OPTIONS& filterOpts = GetToolManager()->GetTool()->GetFilter(); @@ -141,9 +140,6 @@ bool PCB_EDIT_FRAME::LoadProjectSettings() opts.m_ZoneOpacity = localSettings.m_ZoneOpacity; SetDisplayOptions( opts ); - if( GetBoard()->GetDesignSettings().IsLayerEnabled( localSettings.m_ActiveLayer ) ) - SetActiveLayer( localSettings.m_ActiveLayer ); - wxFileName fn( GetCurrentFileName() ); fn.MakeRelativeTo( Prj().GetProjectPath() ); LoadWindowState( fn.GetFullPath() );