Return all results with an empty search pane filter.
Also moves the EDA_EVT_SCHEMATIC_CHANGED event so it fires after the schematic has been loaded. Fixes https://gitlab.com/kicad/code/kicad/-/issues/14871
This commit is contained in:
parent
3f758711fd
commit
61493b8489
|
@ -517,6 +517,24 @@ bool SCH_EDIT_FRAME::OpenProjectFiles( const std::vector<wxString>& aFileSet, in
|
|||
TestDanglingEnds();
|
||||
|
||||
UpdateHierarchyNavigator();
|
||||
|
||||
wxCommandEvent e( EDA_EVT_SCHEMATIC_CHANGED );
|
||||
ProcessEventLocally( e );
|
||||
|
||||
for( wxEvtHandler* listener : m_schematicChangeListeners )
|
||||
{
|
||||
wxCHECK2( listener, continue );
|
||||
|
||||
// Use the windows variant when handling event messages in case there is any special
|
||||
// event handler pre and/or post processing specific to windows.
|
||||
wxWindow* win = dynamic_cast<wxWindow*>( listener );
|
||||
|
||||
if( win )
|
||||
win->HandleWindowEvent( e );
|
||||
else
|
||||
listener->SafelyProcessEvent( e );
|
||||
}
|
||||
|
||||
updateTitle();
|
||||
m_toolManager->GetTool<SCH_NAVIGATE_TOOL>()->ResetHistory();
|
||||
|
||||
|
|
|
@ -788,24 +788,6 @@ void SCH_EDIT_FRAME::CreateScreens()
|
|||
SCH_SCREEN* screen = new SCH_SCREEN( m_schematic );
|
||||
SetScreen( screen );
|
||||
}
|
||||
|
||||
wxCommandEvent e( EDA_EVT_SCHEMATIC_CHANGED );
|
||||
ProcessEventLocally( e );
|
||||
|
||||
|
||||
for( wxEvtHandler* listener : m_schematicChangeListeners )
|
||||
{
|
||||
wxCHECK2( listener, continue );
|
||||
|
||||
// Use the windows variant when handling event messages in case there is any special
|
||||
// event handler pre and/or post processing specific to windows.
|
||||
wxWindow* win = dynamic_cast<wxWindow*>( listener );
|
||||
|
||||
if( win )
|
||||
win->HandleWindowEvent( e );
|
||||
else
|
||||
listener->SafelyProcessEvent( e );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -843,6 +825,23 @@ void SCH_EDIT_FRAME::HardRedraw()
|
|||
if( Schematic().Settings().m_IntersheetRefsShow )
|
||||
RecomputeIntersheetRefs();
|
||||
|
||||
wxCommandEvent e( EDA_EVT_SCHEMATIC_CHANGED );
|
||||
ProcessEventLocally( e );
|
||||
|
||||
for( wxEvtHandler* listener : m_schematicChangeListeners )
|
||||
{
|
||||
wxCHECK2( listener, continue );
|
||||
|
||||
// Use the windows variant when handling event messages in case there is any special
|
||||
// event handler pre and/or post processing specific to windows.
|
||||
wxWindow* win = dynamic_cast<wxWindow*>( listener );
|
||||
|
||||
if( win )
|
||||
win->HandleWindowEvent( e );
|
||||
else
|
||||
listener->SafelyProcessEvent( e );
|
||||
}
|
||||
|
||||
FocusOnItem( nullptr );
|
||||
|
||||
GetCanvas()->DisplaySheet( GetCurrentSheet().LastScreen() );
|
||||
|
|
|
@ -129,31 +129,25 @@ int SYMBOL_SEARCH_HANDLER::Search( const wxString& aQuery )
|
|||
frp.matchMode = EDA_SEARCH_MATCH_MODE::PERMISSIVE;
|
||||
frp.searchCurrentSheetOnly = false;
|
||||
|
||||
auto search = [frp]( SCH_ITEM* item, SCH_SHEET_PATH* sheet )
|
||||
{
|
||||
if( item->Type() == SCH_SYMBOL_T )
|
||||
{
|
||||
SCH_SYMBOL* sym = dynamic_cast<SCH_SYMBOL*>( item );
|
||||
if( sym->IsPower() )
|
||||
return false;
|
||||
|
||||
bool hit = false;
|
||||
for( SCH_FIELD& field : sym->GetFields() )
|
||||
auto search =
|
||||
[frp]( SCH_ITEM* item, SCH_SHEET_PATH* sheet )
|
||||
{
|
||||
if( field.Matches( frp, sheet ) )
|
||||
if( item->Type() == SCH_SYMBOL_T )
|
||||
{
|
||||
hit = true;
|
||||
SCH_SYMBOL* sym = dynamic_cast<SCH_SYMBOL*>( item );
|
||||
|
||||
if( sym->IsPower() )
|
||||
return false;
|
||||
|
||||
for( SCH_FIELD& field : sym->GetFields() )
|
||||
{
|
||||
if( frp.findString.IsEmpty() || field.Matches( frp, sheet ) )
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if( hit )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
return false;
|
||||
};
|
||||
|
||||
FindAll( search );
|
||||
|
||||
|
@ -209,33 +203,17 @@ int TEXT_SEARCH_HANDLER::Search( const wxString& aQuery )
|
|||
frp.matchMode = EDA_SEARCH_MATCH_MODE::PERMISSIVE;
|
||||
frp.searchCurrentSheetOnly = false;
|
||||
|
||||
auto search = [frp]( SCH_ITEM* item, SCH_SHEET_PATH* sheet )
|
||||
{
|
||||
if( item->Type() == SCH_TEXT_T )
|
||||
{
|
||||
SCH_TEXT* text = dynamic_cast<SCH_TEXT*>( item );
|
||||
|
||||
wxCHECK( text, false );
|
||||
|
||||
if( text->Matches( frp, sheet ) )
|
||||
auto search =
|
||||
[frp]( SCH_ITEM* item, SCH_SHEET_PATH* sheet )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if( item->Type() == SCH_TEXTBOX_T )
|
||||
{
|
||||
SCH_TEXTBOX* text = dynamic_cast<SCH_TEXTBOX*>( item );
|
||||
if( item->Type() == SCH_TEXT_T || item->Type() == SCH_TEXTBOX_T )
|
||||
{
|
||||
if( frp.findString.IsEmpty() || item->Matches( frp, sheet ) )
|
||||
return true;
|
||||
}
|
||||
|
||||
wxCHECK( text, false );
|
||||
|
||||
if( text->Matches( frp, sheet ) )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
return false;
|
||||
};
|
||||
|
||||
FindAll( search );
|
||||
|
||||
|
@ -311,23 +289,21 @@ int LABEL_SEARCH_HANDLER::Search( const wxString& aQuery )
|
|||
frp.matchMode = EDA_SEARCH_MATCH_MODE::PERMISSIVE;
|
||||
frp.searchCurrentSheetOnly = false;
|
||||
|
||||
auto search = [frp]( SCH_ITEM* item, SCH_SHEET_PATH* sheet )
|
||||
{
|
||||
if( item->Type() == SCH_LABEL_T || item->Type() == SCH_GLOBAL_LABEL_T
|
||||
|| item->Type() == SCH_HIER_LABEL_T )
|
||||
{
|
||||
SCH_LABEL_BASE* lbl = dynamic_cast<SCH_LABEL_BASE*>( item );
|
||||
|
||||
wxCHECK( lbl, false );
|
||||
|
||||
if( lbl->Matches( frp, sheet ) )
|
||||
auto search =
|
||||
[frp]( SCH_ITEM* item, SCH_SHEET_PATH* sheet )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if( item->IsType( { SCH_LABEL_LOCATE_ANY_T } ) )
|
||||
{
|
||||
SCH_LABEL_BASE* lbl = dynamic_cast<SCH_LABEL_BASE*>( item );
|
||||
|
||||
return false;
|
||||
};
|
||||
wxCHECK( lbl, false );
|
||||
|
||||
if( frp.findString.IsEmpty() || lbl->Matches( frp, sheet ) )
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
FindAll( search );
|
||||
|
||||
|
|
Loading…
Reference in New Issue