Board Setup: Ensure board editor layers page always gets updated
We need to update it even if we move to a different page, as when moving back to the physical stackup page it will reset the layers. Fixes https://gitlab.com/kicad/code/kicad/-/issues/9991
This commit is contained in:
parent
dc71efbcb2
commit
dadaf26ff1
|
@ -1239,7 +1239,7 @@ void PANEL_SETUP_BOARD_STACKUP::OnLayersOptionsChanged( LSET aNewLayerSet )
|
||||||
{
|
{
|
||||||
m_enabledLayers = layersList;
|
m_enabledLayers = layersList;
|
||||||
|
|
||||||
synchronizeWithBoard( true );
|
synchronizeWithBoard( false );
|
||||||
|
|
||||||
Layout();
|
Layout();
|
||||||
Refresh();
|
Refresh();
|
||||||
|
|
|
@ -79,6 +79,8 @@ DIALOG_BOARD_SETUP::DIALOG_BOARD_SETUP( PCB_EDIT_FRAME* aFrame ) :
|
||||||
|
|
||||||
m_treebook->AddPage( new wxPanel( this ), _( "Board Stackup" ) );
|
m_treebook->AddPage( new wxPanel( this ), _( "Board Stackup" ) );
|
||||||
|
|
||||||
|
m_currentPage = -1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* WARNING: Code currently relies on the layers setup coming before the physical stackup panel,
|
* WARNING: Code currently relies on the layers setup coming before the physical stackup panel,
|
||||||
* and thus transferring data to the board first. See comment in
|
* and thus transferring data to the board first. See comment in
|
||||||
|
@ -138,13 +140,17 @@ void DIALOG_BOARD_SETUP::OnPageChange( wxBookCtrlEvent& event )
|
||||||
{
|
{
|
||||||
int page = event.GetSelection();
|
int page = event.GetSelection();
|
||||||
|
|
||||||
|
// Ensure layer page always gets updated even if we aren't moving towards it
|
||||||
|
if( m_currentPage == m_physicalStackupPage )
|
||||||
|
m_layers->SyncCopperLayers( m_physicalStackup->GetCopperLayerCount() );
|
||||||
|
|
||||||
if( page == m_physicalStackupPage )
|
if( page == m_physicalStackupPage )
|
||||||
m_physicalStackup->OnLayersOptionsChanged( m_layers->GetUILayerMask() );
|
m_physicalStackup->OnLayersOptionsChanged( m_layers->GetUILayerMask() );
|
||||||
else if( page == m_layerSetupPage )
|
|
||||||
m_layers->SyncCopperLayers( m_physicalStackup->GetCopperLayerCount() );
|
|
||||||
else if( Prj().IsReadOnly() )
|
else if( Prj().IsReadOnly() )
|
||||||
KIUI::Disable( m_treebook->GetPage( page ) );
|
KIUI::Disable( m_treebook->GetPage( page ) );
|
||||||
|
|
||||||
|
m_currentPage = page;
|
||||||
|
|
||||||
#ifdef __WXMAC__
|
#ifdef __WXMAC__
|
||||||
// Work around an OSX bug where the wxGrid children don't get placed correctly until
|
// Work around an OSX bug where the wxGrid children don't get placed correctly until
|
||||||
// the first resize event
|
// the first resize event
|
||||||
|
|
|
@ -66,6 +66,7 @@ protected:
|
||||||
void OnPageChange( wxBookCtrlEvent& event );
|
void OnPageChange( wxBookCtrlEvent& event );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
int m_currentPage; // the current page index
|
||||||
int m_physicalStackupPage; // the page index of the PANEL_SETUP_BOARD_STACKUP page
|
int m_physicalStackupPage; // the page index of the PANEL_SETUP_BOARD_STACKUP page
|
||||||
int m_layerSetupPage; // the page index of the PANEL_SETUP_LAYERS page
|
int m_layerSetupPage; // the page index of the PANEL_SETUP_LAYERS page
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue