Browse Source

Handle multiple annotation in search

New schematic format needs to search client screen paths instead of
maintaining multiple copies in a flat format.
6.0.7
Seth Hillbrand 4 years ago
parent
commit
75e4fa9b75
  1. 28
      eeschema/tools/sch_editor_control.cpp

28
eeschema/tools/sch_editor_control.cpp

@ -425,6 +425,8 @@ int SCH_EDITOR_CONTROL::FindNext( const TOOL_EVENT& aEvent )
SCH_SHEET_LIST schematic = m_frame->Schematic().GetSheets();
SCH_SCREENS screens( m_frame->Schematic().Root() );
screens.BuildClientSheetPathList();
for( SCH_SCREEN* screen = screens.GetFirst(); screen; screen = screens.GetNext() )
{
if( afterScreen )
@ -435,24 +437,26 @@ int SCH_EDITOR_CONTROL::FindNext( const TOOL_EVENT& aEvent )
continue;
}
SCH_SHEET_PATH* sheet = schematic.FindSheetForScreen( screen );
item = nextMatch( screen, sheet, nullptr, data );
if( item )
for( SCH_SHEET_PATH sheet : screen->GetClientSheetPaths() )
{
wxCHECK_MSG( sheet, 0, "Sheet not found for " + screen->GetFileName() );
item = nextMatch( screen, &sheet, nullptr, data );
m_frame->Schematic().SetCurrentSheet( *sheet );
m_frame->GetCurrentSheet().UpdateAllScreenReferences();
if( item )
{
m_frame->Schematic().SetCurrentSheet( sheet );
m_frame->GetCurrentSheet().UpdateAllScreenReferences();
screen->TestDanglingEnds();
screen->TestDanglingEnds();
m_frame->SetScreen( screen );
UpdateFind( ACTIONS::updateFind.MakeEvent() );
m_frame->SetScreen( screen );
UpdateFind( ACTIONS::updateFind.MakeEvent() );
break;
break;
}
}
if( item )
break;
}
}

Loading…
Cancel
Save