Browse Source

Remove the callback on RecomputeIntersheetRefs

9.0
Marek Roszko 6 months ago
committed by Mark Roszko
parent
commit
e49d44ea25
  1. 17
      eeschema/eeschema_helpers.cpp
  2. 32
      eeschema/sch_edit_frame.cpp
  3. 5
      eeschema/sch_edit_frame.h
  4. 15
      eeschema/schematic.cpp
  5. 3
      eeschema/schematic.h
  6. 3
      eeschema/schematic_holder.h

17
eeschema/eeschema_helpers.cpp

@ -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 )
{

32
eeschema/sch_edit_frame.cpp

@ -1793,19 +1793,12 @@ 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 );
},
GetCanvas()->GetView(),
&changeHandler,
m_undoList.m_CommandsList.empty() ? nullptr : m_undoList.m_CommandsList.back() );
Schematic().RecalculateConnections( aCommit, aCleanupFlags,
m_toolManager,
GetCanvas()->GetView(),
&changeHandler,
m_undoList.m_CommandsList.empty()
? nullptr : m_undoList.m_CommandsList.back() );
GetCanvas()->GetView()->UpdateAllItemsConditionally(
[&]( KIGFX::VIEW_ITEM* aItem ) -> int
@ -1862,14 +1855,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 );
}

5
eeschema/sch_edit_frame.h

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

15
eeschema/schematic.cpp

@ -709,8 +709,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();
@ -749,7 +748,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 );
}
}
}
@ -1266,7 +1272,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,
KIGFX::SCH_VIEW* aSchView,
std::function<void( SCH_ITEM* )>* aChangedItemHandler,
PICKED_ITEMS_LIST* aLastChangeList )
@ -1295,7 +1300,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

3
eeschema/schematic.h

@ -254,7 +254,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.
@ -417,7 +417,6 @@ public:
*/
void RecalculateConnections( SCH_COMMIT* aCommit, SCH_CLEANUP_FLAGS aCleanupFlags,
TOOL_MANAGER* aToolManager,
const std::function<void( SCH_GLOBALLABEL* )>& aIntersheetRefItemCallback,
KIGFX::SCH_VIEW* aSchView = nullptr,
std::function<void( SCH_ITEM* )>* aChangedItemHandler = nullptr,
PICKED_ITEMS_LIST* aLastChangeList = nullptr );

3
eeschema/schematic_holder.h

@ -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 ) {}
};
Loading…
Cancel
Save