Set board modify bit only when necessary after Board Setup.

Fixes https://gitlab.com/kicad/code/kicad/issues/5685
This commit is contained in:
Jeff Young
2020-10-13 23:11:29 +01:00
parent cb1d416e5a
commit 505d764f25
8 changed files with 74 additions and 19 deletions
@@ -1082,6 +1082,9 @@ bool PANEL_SETUP_BOARD_STACKUP::TransferDataFromWindow()
BOARD_STACKUP& brd_stackup = m_brdSettings->GetStackupDescriptor();
STRING_FORMATTER old_stackup;
brd_stackup.FormatBoardStackup( &old_stackup, m_board, 0 );
brd_stackup.m_FinishType = m_stackup.m_FinishType;
brd_stackup.m_HasDielectricConstrains = m_stackup.m_HasDielectricConstrains;
brd_stackup.m_EdgeConnectorConstraints = m_stackup.m_EdgeConnectorConstraints;
@@ -1091,14 +1094,31 @@ bool PANEL_SETUP_BOARD_STACKUP::TransferDataFromWindow()
// copy enabled items to the new board stackup
brd_stackup.RemoveAll();
for( auto item : m_stackup.GetList() )
for( BOARD_STACKUP_ITEM* item : m_stackup.GetList() )
{
if( item->IsEnabled() )
brd_stackup.Add( new BOARD_STACKUP_ITEM( *item ) );
}
m_brdSettings->SetBoardThickness( GetPcbThickness() );
m_brdSettings->m_HasStackup = true;
STRING_FORMATTER new_stackup;
brd_stackup.FormatBoardStackup( &new_stackup, m_board, 0 );
bool modified = old_stackup.GetString() != new_stackup.GetString();
if( m_brdSettings->GetBoardThickness() != GetPcbThickness() )
{
m_brdSettings->SetBoardThickness( GetPcbThickness() );
modified = true;
}
if( !m_brdSettings->m_HasStackup )
{
m_brdSettings->m_HasStackup = true;
modified = true;
}
if( modified )
m_frame->OnModify();
return true;
}