Fix variable updating in SCH_FIELDs (which are not directly in the view).
This commit is contained in:
parent
fb225acefc
commit
3ecd6ec186
|
@ -1481,25 +1481,42 @@ void SCH_EDIT_FRAME::RecalculateConnections( SCH_CLEANUP_FLAGS aCleanupFlags )
|
||||||
GetCanvas()->GetView()->UpdateAllItemsConditionally(
|
GetCanvas()->GetView()->UpdateAllItemsConditionally(
|
||||||
[]( KIGFX::VIEW_ITEM* aItem ) -> int
|
[]( KIGFX::VIEW_ITEM* aItem ) -> int
|
||||||
{
|
{
|
||||||
|
int flags = 0;
|
||||||
SCH_ITEM* item = dynamic_cast<SCH_ITEM*>( aItem );
|
SCH_ITEM* item = dynamic_cast<SCH_ITEM*>( aItem );
|
||||||
SCH_CONNECTION* connection = item ? item->Connection() : nullptr;
|
SCH_CONNECTION* connection = item ? item->Connection() : nullptr;
|
||||||
|
|
||||||
if( connection && connection->HasDriverChanged() )
|
if( connection && connection->HasDriverChanged() )
|
||||||
{
|
{
|
||||||
connection->ClearDriverChanged();
|
connection->ClearDriverChanged();
|
||||||
return KIGFX::REPAINT;
|
flags |= KIGFX::REPAINT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( item )
|
||||||
|
{
|
||||||
|
item->RunOnChildren(
|
||||||
|
[&flags]( SCH_ITEM* aChild )
|
||||||
|
{
|
||||||
|
EDA_TEXT* text = dynamic_cast<EDA_TEXT*>( aChild );
|
||||||
|
|
||||||
|
if( text && text->HasTextVars() )
|
||||||
|
{
|
||||||
|
text->ClearRenderCache();
|
||||||
|
text->ClearBoundingBoxCache();
|
||||||
|
flags |= KIGFX::GEOMETRY | KIGFX::REPAINT;
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
|
||||||
EDA_TEXT* text = dynamic_cast<EDA_TEXT*>( aItem );
|
EDA_TEXT* text = dynamic_cast<EDA_TEXT*>( aItem );
|
||||||
|
|
||||||
if( text && text->HasTextVars() )
|
if( text && text->HasTextVars() )
|
||||||
{
|
{
|
||||||
text->ClearRenderCache();
|
text->ClearRenderCache();
|
||||||
text->ClearBoundingBoxCache();
|
text->ClearBoundingBoxCache();
|
||||||
return KIGFX::GEOMETRY | KIGFX::REPAINT;
|
flags |= KIGFX::GEOMETRY | KIGFX::REPAINT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return flags;
|
||||||
} );
|
} );
|
||||||
|
|
||||||
if( highlightedItem )
|
if( highlightedItem )
|
||||||
|
|
|
@ -961,27 +961,45 @@ int SCH_EDITOR_CONTROL::AssignNetclass( const TOOL_EVENT& aEvent )
|
||||||
getView()->UpdateAllItemsConditionally(
|
getView()->UpdateAllItemsConditionally(
|
||||||
[]( KIGFX::VIEW_ITEM* aItem ) -> int
|
[]( KIGFX::VIEW_ITEM* aItem ) -> int
|
||||||
{
|
{
|
||||||
|
int flags = 0;
|
||||||
|
|
||||||
// Netclass coloured items
|
// Netclass coloured items
|
||||||
//
|
//
|
||||||
if( dynamic_cast<SCH_LINE*>( aItem ) )
|
if( dynamic_cast<SCH_LINE*>( aItem ) )
|
||||||
return KIGFX::REPAINT;
|
flags |= KIGFX::REPAINT;
|
||||||
else if( dynamic_cast<SCH_JUNCTION*>( aItem ) )
|
else if( dynamic_cast<SCH_JUNCTION*>( aItem ) )
|
||||||
return KIGFX::REPAINT;
|
flags |= KIGFX::REPAINT;
|
||||||
else if( dynamic_cast<SCH_BUS_ENTRY_BASE*>( aItem ) )
|
else if( dynamic_cast<SCH_BUS_ENTRY_BASE*>( aItem ) )
|
||||||
return KIGFX::REPAINT;
|
flags |= KIGFX::REPAINT;
|
||||||
|
|
||||||
// Items that might reference an item's netclass name
|
// Items that might reference an item's netclass name
|
||||||
//
|
//
|
||||||
|
if( SCH_ITEM* item = dynamic_cast<SCH_ITEM*>( aItem ) )
|
||||||
|
{
|
||||||
|
item->RunOnChildren(
|
||||||
|
[&flags]( SCH_ITEM* aChild )
|
||||||
|
{
|
||||||
|
EDA_TEXT* text = dynamic_cast<EDA_TEXT*>( aChild );
|
||||||
|
|
||||||
|
if( text && text->HasTextVars() )
|
||||||
|
{
|
||||||
|
text->ClearRenderCache();
|
||||||
|
text->ClearBoundingBoxCache();
|
||||||
|
flags |= KIGFX::GEOMETRY | KIGFX::REPAINT;
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
|
||||||
EDA_TEXT* text = dynamic_cast<EDA_TEXT*>( aItem );
|
EDA_TEXT* text = dynamic_cast<EDA_TEXT*>( aItem );
|
||||||
|
|
||||||
if( text && text->HasTextVars() )
|
if( text && text->HasTextVars() )
|
||||||
{
|
{
|
||||||
text->ClearRenderCache();
|
text->ClearRenderCache();
|
||||||
text->ClearBoundingBoxCache();
|
text->ClearBoundingBoxCache();
|
||||||
return KIGFX::GEOMETRY | KIGFX::REPAINT;
|
flags |= KIGFX::GEOMETRY | KIGFX::REPAINT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return flags;
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue