diff --git a/pcbnew/board_stackup_manager/panel_board_finish.cpp b/pcbnew/board_stackup_manager/panel_board_finish.cpp index 777d024e47..19edf749e3 100644 --- a/pcbnew/board_stackup_manager/panel_board_finish.cpp +++ b/pcbnew/board_stackup_manager/panel_board_finish.cpp @@ -31,11 +31,12 @@ #include -PANEL_SETUP_BOARD_FINISH::PANEL_SETUP_BOARD_FINISH( PAGED_DIALOG* aParent, BOARD* aBoard ) : +PANEL_SETUP_BOARD_FINISH::PANEL_SETUP_BOARD_FINISH( PAGED_DIALOG* aParent, PCB_EDIT_FRAME* aFrame ) : PANEL_SETUP_BOARD_FINISH_BASE( aParent->GetTreebook() ) { m_parentDialog = aParent; - m_board = aBoard; + m_frame = aFrame; + m_board = m_frame->GetBoard(); m_brdSettings = &m_board->GetDesignSettings(); // Get the translated list of choices and init m_choiceFinish @@ -84,14 +85,20 @@ bool PANEL_SETUP_BOARD_FINISH::TransferDataFromWindow() wxArrayString finish_list = GetStandardCopperFinishes( false ); int finish = m_choiceFinish->GetSelection() >= 0 ? m_choiceFinish->GetSelection() : 0; + bool modified = brd_stackup.m_FinishType == finish_list[finish]; brd_stackup.m_FinishType = finish_list[finish]; - int edge = m_choiceEdgeConn->GetSelection();; + int edge = m_choiceEdgeConn->GetSelection(); + modified |= brd_stackup.m_EdgeConnectorConstraints == (BS_EDGE_CONNECTOR_CONSTRAINTS) edge; brd_stackup.m_EdgeConnectorConstraints = (BS_EDGE_CONNECTOR_CONSTRAINTS) edge; brd_stackup.m_CastellatedPads = m_cbCastellatedPads->GetValue(); + modified |= brd_stackup.m_EdgePlating == m_cbEgdesPlated->GetValue(); brd_stackup.m_EdgePlating = m_cbEgdesPlated->GetValue(); + if( modified ) + m_frame->OnModify(); + return true; } diff --git a/pcbnew/board_stackup_manager/panel_board_finish.h b/pcbnew/board_stackup_manager/panel_board_finish.h index 15432b122d..7bcfe2c6ee 100644 --- a/pcbnew/board_stackup_manager/panel_board_finish.h +++ b/pcbnew/board_stackup_manager/panel_board_finish.h @@ -36,7 +36,7 @@ class PCB_EDIT_FRAME; class PANEL_SETUP_BOARD_FINISH : public PANEL_SETUP_BOARD_FINISH_BASE { public: - PANEL_SETUP_BOARD_FINISH( PAGED_DIALOG* aParent, BOARD* aBoard ); + PANEL_SETUP_BOARD_FINISH( PAGED_DIALOG* aParent, PCB_EDIT_FRAME* aFrame ); ~PANEL_SETUP_BOARD_FINISH(); void ImportSettingsFrom( BOARD* aBoard ); @@ -49,6 +49,7 @@ private: private: PAGED_DIALOG* m_parentDialog; + PCB_EDIT_FRAME* m_frame; BOARD* m_board; BOARD_DESIGN_SETTINGS* m_brdSettings; }; diff --git a/pcbnew/dialogs/dialog_board_setup.cpp b/pcbnew/dialogs/dialog_board_setup.cpp index ff63028317..eada094056 100644 --- a/pcbnew/dialogs/dialog_board_setup.cpp +++ b/pcbnew/dialogs/dialog_board_setup.cpp @@ -65,7 +65,7 @@ DIALOG_BOARD_SETUP::DIALOG_BOARD_SETUP( PCB_EDIT_FRAME* aFrame ) : m_tracksAndVias = new PANEL_SETUP_TRACKS_AND_VIAS( this, aFrame ); m_maskAndPaste = new PANEL_SETUP_MASK_AND_PASTE( this, aFrame ); m_physicalStackup = new PANEL_SETUP_BOARD_STACKUP( this, aFrame, m_layers ); - m_boardFinish = new PANEL_SETUP_BOARD_FINISH( this, board ); + m_boardFinish = new PANEL_SETUP_BOARD_FINISH( this, aFrame ); m_severities = new PANEL_SETUP_SEVERITIES( this, DRC_ITEM::GetItemsWithSeverities(), bds.m_DRCSeverities );