Redraw pads when mask or paste layer is visible after board setup.

Fixes https://gitlab.com/kicad/code/kicad/issues/11079
This commit is contained in:
Jeff Young 2022-03-10 17:52:50 +00:00
parent 9ca35cbcee
commit c241032a3b
1 changed files with 12 additions and 9 deletions

View File

@ -985,26 +985,29 @@ void PCB_EDIT_FRAME::ShowBoardSetupDialog( const wxString& aInitialPage )
Kiway().CommonSettingsChanged( false, true );
static LSET maskAndPasteLayers = LSET( 4, F_Mask, F_Paste, B_Mask, B_Paste );
bool maskOrPasteVisible = ( GetBoard()->GetVisibleLayers() & maskAndPasteLayers ).any();
bool padClearancesVisible = GetDisplayOptions().m_DisplayPadClearance;
bool trackClearancesVisible = GetDisplayOptions().m_ShowTrackClearanceMode
== PCB_DISPLAY_OPTIONS::SHOW_TRACK_CLEARANCE_WITH_VIA_ALWAYS;
GetCanvas()->GetView()->UpdateAllItemsConditionally( KIGFX::REPAINT,
[&]( KIGFX::VIEW_ITEM* aItem ) -> bool
{
if( dynamic_cast<PCB_TRACK*>( aItem ) )
{
if( GetDisplayOptions().m_DisplayPadClearance )
return true; // clearance values
return trackClearancesVisible;
}
else if( dynamic_cast<PAD*>( aItem ) )
{
if( GetDisplayOptions().m_ShowTrackClearanceMode
== PCB_DISPLAY_OPTIONS::SHOW_TRACK_CLEARANCE_WITH_VIA_ALWAYS )
{
return true; // clearance values
}
return padClearancesVisible || maskOrPasteVisible;
}
else if( dynamic_cast<EDA_TEXT*>( aItem ) )
{
if( dynamic_cast<EDA_TEXT*>( aItem )->HasTextVars() )
return true; // text variables
EDA_TEXT* text = dynamic_cast<EDA_TEXT*>( aItem );
return text->HasTextVars();
}
return false;