Update text variables when they change.
Fixes https://gitlab.com/kicad/code/kicad/issues/10734
This commit is contained in:
parent
ca7840334c
commit
8d3e1639d0
|
@ -133,9 +133,18 @@ int SCH_EDITOR_CONTROL::PageSetup( const TOOL_EVENT& aEvent )
|
|||
dlg.SetWksFileName( BASE_SCREEN::m_DrawingSheetFileName );
|
||||
|
||||
if( dlg.ShowModal() )
|
||||
{
|
||||
// Update text variables
|
||||
m_frame->GetCanvas()->GetView()->MarkDirty();
|
||||
m_frame->GetCanvas()->GetView()->UpdateAllItems( KIGFX::REPAINT );
|
||||
m_frame->GetCanvas()->Refresh();
|
||||
|
||||
m_frame->OnModify();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_frame->RollbackSchematicFromUndo();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1014,6 +1014,10 @@ void PCB_EDIT_FRAME::ShowBoardSetupDialog( const wxString& aInitialPage )
|
|||
// Make sure everything's up-to-date
|
||||
GetBoard()->BuildListOfNets();
|
||||
|
||||
PCBNEW_SETTINGS::DISPLAY_OPTIONS* displayOpts = &GetPcbNewSettings()->m_Display;
|
||||
PCBNEW_SETTINGS::DISPLAY_OPTIONS prevDisplayOpts = *displayOpts;
|
||||
#define CHANGED( x ) ( displayOpts->x != prevDisplayOpts.x )
|
||||
|
||||
DIALOG_BOARD_SETUP dlg( this );
|
||||
|
||||
if( !aInitialPage.IsEmpty() )
|
||||
|
@ -1028,6 +1032,31 @@ void PCB_EDIT_FRAME::ShowBoardSetupDialog( const wxString& aInitialPage )
|
|||
|
||||
Kiway().CommonSettingsChanged( false, true );
|
||||
|
||||
GetCanvas()->GetView()->UpdateAllItemsConditionally( KIGFX::REPAINT,
|
||||
[&]( KIGFX::VIEW_ITEM* aItem ) -> bool
|
||||
{
|
||||
if( dynamic_cast<RATSNEST_VIEW_ITEM*>( aItem ) )
|
||||
{
|
||||
return CHANGED( m_RatsnestMode )
|
||||
|| CHANGED( m_ShowGlobalRatsnest )
|
||||
|| CHANGED( m_DisplayRatsnestLinesCurved );
|
||||
}
|
||||
else if( dynamic_cast<PCB_TRACK*>( aItem ) )
|
||||
{
|
||||
return CHANGED( m_DisplayPadClearance );
|
||||
}
|
||||
else if( dynamic_cast<PAD*>( aItem ) )
|
||||
{
|
||||
return CHANGED( m_ShowTrackClearanceMode );
|
||||
}
|
||||
else if( dynamic_cast<EDA_TEXT*>( aItem ) )
|
||||
{
|
||||
return true; // text variables
|
||||
}
|
||||
|
||||
return false;
|
||||
} );
|
||||
|
||||
GetCanvas()->Refresh();
|
||||
|
||||
UpdateUserInterface();
|
||||
|
@ -1040,6 +1069,7 @@ void PCB_EDIT_FRAME::ShowBoardSetupDialog( const wxString& aInitialPage )
|
|||
m_toolManager->ProcessEvent( toolEvent );
|
||||
}
|
||||
|
||||
#undef CHANGED
|
||||
GetCanvas()->SetFocus();
|
||||
}
|
||||
|
||||
|
@ -1785,14 +1815,6 @@ void PCB_EDIT_FRAME::CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVars
|
|||
WX_INFOBAR::MESSAGE_TYPE::DRC_RULES_ERROR );
|
||||
}
|
||||
|
||||
GetCanvas()->GetView()->UpdateAllItemsConditionally( KIGFX::REPAINT,
|
||||
[]( KIGFX::VIEW_ITEM* aItem ) -> bool
|
||||
{
|
||||
return dynamic_cast<RATSNEST_VIEW_ITEM*>( aItem )
|
||||
|| dynamic_cast<PCB_TRACK*>( aItem )
|
||||
|| dynamic_cast<PAD*>( aItem );
|
||||
} );
|
||||
|
||||
GetCanvas()->GetView()->MarkTargetDirty( KIGFX::TARGET_NONCACHED );
|
||||
GetCanvas()->ForceRefresh();
|
||||
|
||||
|
|
|
@ -339,9 +339,32 @@ int BOARD_EDITOR_CONTROL::PageSettings( const TOOL_EVENT& aEvent )
|
|||
dlg.SetWksFileName( BASE_SCREEN::m_DrawingSheetFileName );
|
||||
|
||||
if( dlg.ShowModal() == wxID_OK )
|
||||
{
|
||||
m_frame->GetCanvas()->GetView()->UpdateAllItemsConditionally( KIGFX::REPAINT,
|
||||
[&]( KIGFX::VIEW_ITEM* aItem ) -> bool
|
||||
{
|
||||
BOARD_ITEM* item = dynamic_cast<BOARD_ITEM*>( aItem );
|
||||
|
||||
if( !item )
|
||||
return false;
|
||||
|
||||
switch( item->Type() )
|
||||
{
|
||||
case PCB_TEXT_T:
|
||||
case PCB_FP_TEXT_T:
|
||||
return true; // text variables
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
} );
|
||||
|
||||
m_frame->OnModify();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_frame->RollbackFromUndo();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue