Remove the callback on RecomputeIntersheetRefs

This commit is contained in:
Marek Roszko 2025-06-05 20:25:17 -04:00
parent 674ffa2a3d
commit bf192a1a98
6 changed files with 27 additions and 37 deletions

View File

@ -196,25 +196,12 @@ SCHEMATIC* EESCHEMA_HELPERS::LoadSchematic( const wxString& aFileName,
toolManager->SetEnvironment( schematic, nullptr, nullptr, Kiface().KifaceSettings(), nullptr );
SCH_COMMIT dummyCommit( toolManager );
schematic->RecalculateConnections( &dummyCommit, GLOBAL_CLEANUP, toolManager,
[&]( SCH_GLOBALLABEL* label )
{
for( SCH_FIELD& field : label->GetFields() )
field.ClearBoundingBoxCache();
label->ClearBoundingBoxCache();
} );
schematic->RecalculateConnections( &dummyCommit, GLOBAL_CLEANUP, toolManager );
schematic->ResolveERCExclusionsPostUpdate();
schematic->SetSheetNumberAndCount();
schematic->RecomputeIntersheetRefs( []( SCH_GLOBALLABEL* aGlobal )
{
for( SCH_FIELD& field : aGlobal->GetFields() )
field.ClearBoundingBoxCache();
aGlobal->ClearBoundingBoxCache();
} );
schematic->RecomputeIntersheetRefs();
for( SCH_SHEET_PATH& sheet : sheetList )
{

View File

@ -1810,14 +1810,6 @@ void SCH_EDIT_FRAME::RecalculateConnections( SCH_COMMIT* aCommit, SCH_CLEANUP_FL
Schematic().RecalculateConnections( aCommit, aCleanupFlags,
m_toolManager,
[&]( SCH_GLOBALLABEL* label )
{
for( SCH_FIELD& field : label->GetFields() )
field.ClearBoundingBoxCache();
label->ClearBoundingBoxCache();
GetCanvas()->GetView()->Update( label );
},
aProgressReporter,
GetCanvas()->GetView(),
&changeHandler,
@ -1880,14 +1872,13 @@ void SCH_EDIT_FRAME::RecalculateConnections( SCH_COMMIT* aCommit, SCH_CLEANUP_FL
void SCH_EDIT_FRAME::RecomputeIntersheetRefs()
{
Schematic().RecomputeIntersheetRefs( [&]( SCH_GLOBALLABEL* label )
{
for( SCH_FIELD& field : label->GetFields() )
field.ClearBoundingBoxCache();
Schematic().RecomputeIntersheetRefs();
}
label->ClearBoundingBoxCache();
GetCanvas()->GetView()->Update( label );
} );
void SCH_EDIT_FRAME::IntersheetRefUpdate( SCH_GLOBALLABEL* aItem )
{
GetCanvas()->GetView()->Update( aItem );
}

View File

@ -786,6 +786,11 @@ public:
*/
void RecomputeIntersheetRefs();
/**
* Callback from schematic ref update
*/
void IntersheetRefUpdate( SCH_GLOBALLABEL* aItem ) override;
void ShowAllIntersheetRefs( bool aShow );
/**

View File

@ -693,8 +693,7 @@ void SCHEMATIC::SetSheetNumberAndCount()
}
void SCHEMATIC::RecomputeIntersheetRefs(
const std::function<void( SCH_GLOBALLABEL* )>& aItemCallback )
void SCHEMATIC::RecomputeIntersheetRefs()
{
std::map<wxString, std::set<int>>& pageRefsMap = GetPageRefsMap();
@ -733,7 +732,14 @@ void SCHEMATIC::RecomputeIntersheetRefs(
globalLabel->AutoplaceFields( CurrentSheet().LastScreen(), AUTOPLACE_AUTO );
CurrentSheet().LastScreen()->Update( globalLabel );
aItemCallback( globalLabel );
for( SCH_FIELD& field : globalLabel->GetFields() )
field.ClearBoundingBoxCache();
globalLabel->ClearBoundingBoxCache();
if( m_schematicHolder )
m_schematicHolder->IntersheetRefUpdate( globalLabel );
}
}
}
@ -1250,7 +1256,6 @@ void SCHEMATIC::CleanUp( SCH_COMMIT* aCommit, SCH_SCREEN* aScreen )
void SCHEMATIC::RecalculateConnections( SCH_COMMIT* aCommit, SCH_CLEANUP_FLAGS aCleanupFlags,
TOOL_MANAGER* aToolManager,
const std::function<void( SCH_GLOBALLABEL* )>& aIntersheetRefItemCallback,
PROGRESS_REPORTER* aProgressReporter,
KIGFX::SCH_VIEW* aSchView,
std::function<void( SCH_ITEM* )>* aChangedItemHandler,
@ -1280,7 +1285,7 @@ void SCHEMATIC::RecalculateConnections( SCH_COMMIT* aCommit, SCH_CLEANUP_FLAGS a
wxLogTrace( "CONN_PROFILE", "SchematicCleanUp() %0.4f ms", timer.msecs() );
if( settings.m_IntersheetRefsShow )
RecomputeIntersheetRefs( aIntersheetRefItemCallback );
RecomputeIntersheetRefs();
if( !ADVANCED_CFG::GetCfg().m_IncrementalConnectivity
|| aCleanupFlags == GLOBAL_CLEANUP

View File

@ -253,7 +253,7 @@ public:
* Update the schematic's page reference map for all global labels, and refresh the labels
* so that they are redrawn with up-to-date references.
*/
void RecomputeIntersheetRefs( const std::function<void( SCH_GLOBALLABEL* )>& aItemCallback );
void RecomputeIntersheetRefs();
/**
* Clear operating points from a .op simulation.
@ -416,7 +416,6 @@ public:
*/
void RecalculateConnections( SCH_COMMIT* aCommit, SCH_CLEANUP_FLAGS aCleanupFlags,
TOOL_MANAGER* aToolManager,
const std::function<void( SCH_GLOBALLABEL* )>& aIntersheetRefItemCallback,
PROGRESS_REPORTER* aProgressReporter = nullptr,
KIGFX::SCH_VIEW* aSchView = nullptr,
std::function<void( SCH_ITEM* )>* aChangedItemHandler = nullptr,

View File

@ -22,6 +22,7 @@
class EDA_ITEM;
class SCH_SCREEN;
class SCH_SELECTION_TOOL;
class SCH_GLOBALLABEL;
/**
* This is a bridge class to help the schematic be able to affect SCH_EDIT_FRAME
@ -42,4 +43,6 @@ public:
virtual SCH_SELECTION_TOOL* GetSelectionTool() { return nullptr; }
virtual void RemoveFromScreen( EDA_ITEM* aItem, SCH_SCREEN* aScreen ) = 0;
virtual void IntersheetRefUpdate( SCH_GLOBALLABEL* aItem ) {}
};