From 2093c014c51b24fcb99e39d7cc2abd94609e180a Mon Sep 17 00:00:00 2001 From: jean-pierre charras <jp.charras@wanadoo.fr> Date: Thu, 13 Feb 2025 20:09:54 +0100 Subject: [PATCH] Pcbnew, DIALOG_PRINT_PCBNEW: fix right enabled/disabled layers to print. Fixes https://gitlab.com/kicad/code/kicad/-/issues/19940 --- pcbnew/dialogs/dialog_print_pcbnew.cpp | 30 +++++++++++++++++++------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/pcbnew/dialogs/dialog_print_pcbnew.cpp b/pcbnew/dialogs/dialog_print_pcbnew.cpp index 5795d14e31..25a034165d 100644 --- a/pcbnew/dialogs/dialog_print_pcbnew.cpp +++ b/pcbnew/dialogs/dialog_print_pcbnew.cpp @@ -114,16 +114,13 @@ DIALOG_PRINT_PCBNEW::DIALOG_PRINT_PCBNEW( PCB_BASE_EDIT_FRAME* aParent, // Could devote a PlotOrder() function in place of UIOrder(). m_layerList = board->GetEnabledLayers().UIOrder(); - // Populate the check list box by all enabled layers names + // Populate the check list box by all enabled layers names. They will be enabled later + // when the dlg settings are loaded (i.e. after DIALOG_PRINT_GENERIC::TransferDataToWindow() + // is called for( PCB_LAYER_ID layer : m_layerList ) - { - int checkIndex = m_layerCheckListBox->Append( board->GetLayerName( layer ) ); + m_layerCheckListBox->Append( board->GetLayerName( layer ) ); - if( settings()->m_LayerSet.test( layer ) ) - m_layerCheckListBox->Check( checkIndex ); - } - - m_infoText->SetFont( KIUI::GetInfoFont( this ).Italic() ); + m_infoText->SetFont( KIUI::GetInfoFont( this ) ); m_infoText->SetLabel( _( "Right-click for layer selection commands." ) ); m_infoText->Show( true ); @@ -154,6 +151,20 @@ bool DIALOG_PRINT_PCBNEW::TransferDataToWindow() if( !DIALOG_PRINT_GENERIC::TransferDataToWindow() ) return false; + BOARD* board = m_parent->GetBoard(); + + // Enable layers from previous dlg settings + m_layerList = board->GetEnabledLayers().UIOrder(); + int choice_ly_id = 0; + + for( PCB_LAYER_ID layer : m_layerList ) + { + if( settings()->m_LayerSet.test( layer ) ) + m_layerCheckListBox->Check( choice_ly_id ); + + choice_ly_id++; + } + m_checkAsItems->SetValue( settings()->m_AsItemCheckboxes ); m_checkboxMirror->SetValue( settings()->m_Mirror ); m_titleBlock->SetValue( settings()->m_titleBlock ); @@ -195,6 +206,9 @@ bool DIALOG_PRINT_PCBNEW::TransferDataToWindow() == PCBNEW_PRINTOUT_SETTINGS::LAYER_PER_PAGE ); onPagePerLayerClicked( dummy ); + // Update the dialog layout when layers are added + GetSizer()->Fit( this ); + return true; }