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();
|
TestDanglingEnds();
|
||||||
|
|
||||||
UpdateHierarchyNavigator();
|
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();
|
updateTitle();
|
||||||
m_toolManager->GetTool<SCH_NAVIGATE_TOOL>()->ResetHistory();
|
m_toolManager->GetTool<SCH_NAVIGATE_TOOL>()->ResetHistory();
|
||||||
|
|
||||||
|
|
|
@ -788,24 +788,6 @@ void SCH_EDIT_FRAME::CreateScreens()
|
||||||
SCH_SCREEN* screen = new SCH_SCREEN( m_schematic );
|
SCH_SCREEN* screen = new SCH_SCREEN( m_schematic );
|
||||||
SetScreen( screen );
|
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 )
|
if( Schematic().Settings().m_IntersheetRefsShow )
|
||||||
RecomputeIntersheetRefs();
|
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 );
|
FocusOnItem( nullptr );
|
||||||
|
|
||||||
GetCanvas()->DisplaySheet( GetCurrentSheet().LastScreen() );
|
GetCanvas()->DisplaySheet( GetCurrentSheet().LastScreen() );
|
||||||
|
|
|
@ -129,25 +129,19 @@ int SYMBOL_SEARCH_HANDLER::Search( const wxString& aQuery )
|
||||||
frp.matchMode = EDA_SEARCH_MATCH_MODE::PERMISSIVE;
|
frp.matchMode = EDA_SEARCH_MATCH_MODE::PERMISSIVE;
|
||||||
frp.searchCurrentSheetOnly = false;
|
frp.searchCurrentSheetOnly = false;
|
||||||
|
|
||||||
auto search = [frp]( SCH_ITEM* item, SCH_SHEET_PATH* sheet )
|
auto search =
|
||||||
|
[frp]( SCH_ITEM* item, SCH_SHEET_PATH* sheet )
|
||||||
{
|
{
|
||||||
if( item->Type() == SCH_SYMBOL_T )
|
if( item->Type() == SCH_SYMBOL_T )
|
||||||
{
|
{
|
||||||
SCH_SYMBOL* sym = dynamic_cast<SCH_SYMBOL*>( item );
|
SCH_SYMBOL* sym = dynamic_cast<SCH_SYMBOL*>( item );
|
||||||
|
|
||||||
if( sym->IsPower() )
|
if( sym->IsPower() )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
bool hit = false;
|
|
||||||
for( SCH_FIELD& field : sym->GetFields() )
|
for( SCH_FIELD& field : sym->GetFields() )
|
||||||
{
|
{
|
||||||
if( field.Matches( frp, sheet ) )
|
if( frp.findString.IsEmpty() || field.Matches( frp, sheet ) )
|
||||||
{
|
|
||||||
hit = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if( hit )
|
|
||||||
{
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -209,30 +203,14 @@ int TEXT_SEARCH_HANDLER::Search( const wxString& aQuery )
|
||||||
frp.matchMode = EDA_SEARCH_MATCH_MODE::PERMISSIVE;
|
frp.matchMode = EDA_SEARCH_MATCH_MODE::PERMISSIVE;
|
||||||
frp.searchCurrentSheetOnly = false;
|
frp.searchCurrentSheetOnly = false;
|
||||||
|
|
||||||
auto search = [frp]( SCH_ITEM* item, SCH_SHEET_PATH* sheet )
|
auto search =
|
||||||
|
[frp]( SCH_ITEM* item, SCH_SHEET_PATH* sheet )
|
||||||
{
|
{
|
||||||
if( item->Type() == SCH_TEXT_T )
|
if( item->Type() == SCH_TEXT_T || item->Type() == SCH_TEXTBOX_T )
|
||||||
{
|
|
||||||
SCH_TEXT* text = dynamic_cast<SCH_TEXT*>( item );
|
|
||||||
|
|
||||||
wxCHECK( text, false );
|
|
||||||
|
|
||||||
if( text->Matches( frp, sheet ) )
|
|
||||||
{
|
{
|
||||||
|
if( frp.findString.IsEmpty() || item->Matches( frp, sheet ) )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else if( item->Type() == SCH_TEXTBOX_T )
|
|
||||||
{
|
|
||||||
SCH_TEXTBOX* text = dynamic_cast<SCH_TEXTBOX*>( item );
|
|
||||||
|
|
||||||
wxCHECK( text, false );
|
|
||||||
|
|
||||||
if( text->Matches( frp, sheet ) )
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
@ -311,20 +289,18 @@ int LABEL_SEARCH_HANDLER::Search( const wxString& aQuery )
|
||||||
frp.matchMode = EDA_SEARCH_MATCH_MODE::PERMISSIVE;
|
frp.matchMode = EDA_SEARCH_MATCH_MODE::PERMISSIVE;
|
||||||
frp.searchCurrentSheetOnly = false;
|
frp.searchCurrentSheetOnly = false;
|
||||||
|
|
||||||
auto search = [frp]( SCH_ITEM* item, SCH_SHEET_PATH* sheet )
|
auto search =
|
||||||
|
[frp]( SCH_ITEM* item, SCH_SHEET_PATH* sheet )
|
||||||
{
|
{
|
||||||
if( item->Type() == SCH_LABEL_T || item->Type() == SCH_GLOBAL_LABEL_T
|
if( item->IsType( { SCH_LABEL_LOCATE_ANY_T } ) )
|
||||||
|| item->Type() == SCH_HIER_LABEL_T )
|
|
||||||
{
|
{
|
||||||
SCH_LABEL_BASE* lbl = dynamic_cast<SCH_LABEL_BASE*>( item );
|
SCH_LABEL_BASE* lbl = dynamic_cast<SCH_LABEL_BASE*>( item );
|
||||||
|
|
||||||
wxCHECK( lbl, false );
|
wxCHECK( lbl, false );
|
||||||
|
|
||||||
if( lbl->Matches( frp, sheet ) )
|
if( frp.findString.IsEmpty() || lbl->Matches( frp, sheet ) )
|
||||||
{
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue