@@ -18,6 +18,7 @@ namespace ComponentSelectorAdditions
1818 internal sealed class SearchBar : ConfiguredResoniteMonkey < SearchBar , SearchConfig > , IEventHandler < BuildSelectorHeaderEvent > ,
1919 ICancelableEventHandler < EnumerateCategoriesEvent > , ICancelableEventHandler < EnumerateComponentsEvent >
2020 {
21+ private const string ProtoFluxPath = "/ProtoFlux/Runtimes/Execution/Nodes" ;
2122 private static readonly char [ ] _searchSplits = new [ ] { ' ' , ',' , '+' , '|' } ;
2223 public override bool CanBeDisabled => true ;
2324 public int Priority => HarmonyLib . Priority . VeryHigh ;
@@ -39,7 +40,7 @@ public void Handle(BuildSelectorHeaderEvent eventData)
3940 searchLayout . DestroyWhenLocalUserLeaves ( ) ;
4041
4142 ui . Style . FlexibleWidth = 1 ;
42- var textField = ui . TextField ( null , parseRTF : false ) ;
43+ var textField = ui . TextField ( null ! , parseRTF : false ) ;
4344 var details = new SelectorSearchBar ( searchLayout , textField . Editor . Target , ( ) => ConfigSection . SearchRefreshDelay ) ;
4445 eventData . SearchBar = details ;
4546
@@ -48,20 +49,23 @@ public void Handle(BuildSelectorHeaderEvent eventData)
4849
4950 ui . Style . FlexibleWidth = - 1 ;
5051 ui . Style . ButtonTextAlignment = Alignment . MiddleCenter ;
51- ui . LocalActionButton ( "∅" , _ => details . Content = null ) ;
52+
53+ var clearButton = ui . Button ( "∅" ) ;
54+ var clearAction = clearButton . Slot . AttachComponent < ButtonValueSet < string > > ( ) ;
55+ clearAction . TargetValue . Target = details . Text . Content ;
5256
5357 ui . PopStyle ( ) ;
5458 ui . NestOut ( ) ;
5559 }
5660
5761 public void Handle ( EnumerateCategoriesEvent eventData )
5862 {
59- if ( ! eventData . Path . HasSearch || ( eventData . Path . IsSelectorRoot && eventData . Path . Search . Length < 3 ) )
63+ if ( ! eventData . Path . HasSearch || ( ( eventData . Path . IsSelectorRoot || ConfigSection . AlwaysSearchRoot ) && eventData . Path . Search . Length < 3 ) )
6064 return ;
6165
6266 var search = eventData . Path . Search . Split ( _searchSplits , StringSplitOptions . RemoveEmptyEntries ) ;
6367
64- foreach ( var category in SearchCategories ( eventData . RootCategory , search ) )
68+ foreach ( var category in SearchCategories ( PickSearchCategory ( eventData ) , search ) )
6569 eventData . AddItem ( category ) ;
6670
6771 eventData . Canceled = true ;
@@ -73,10 +77,12 @@ public void Handle(EnumerateComponentsEvent eventData)
7377 return ;
7478
7579 var search = eventData . Path . Search . Split ( _searchSplits , StringSplitOptions . RemoveEmptyEntries ) ;
76- var results = eventData . RootCategory . Elements
77- . Select ( type => ( Category : eventData . RootCategory , Type : type , Matches : SearchContains ( type . Name , search ) ) )
80+ var searchCategory = PickSearchCategory ( eventData ) ;
81+
82+ var results = searchCategory . Elements
83+ . Select ( type => ( Category : searchCategory , Type : type , Matches : SearchContains ( type . Name , search ) ) )
7884 . Concat (
79- SearchCategories ( eventData . RootCategory )
85+ SearchCategories ( searchCategory )
8086 . SelectMany ( category => category . Elements
8187 . Select ( type => ( Category : category , Type : type , Matches : SearchContains ( type . Name , search ) ) ) ) )
8288 . Where ( match => match . Matches > 0 )
@@ -141,5 +147,16 @@ private static IEnumerable<CategoryNode<Type>> SearchCategories(CategoryNode<Typ
141147
142148 private static int SearchContains ( string haystack , string [ ] needles )
143149 => needles . Count ( needle => CultureInfo . InvariantCulture . CompareInfo . IndexOf ( haystack , needle , CompareOptions . IgnoreCase ) >= 0 ) ;
150+
151+ private CategoryNode < Type > PickSearchCategory ( IEnumerateSelectorResultEvent eventData )
152+ {
153+ var isProtoFlux = eventData . Path . Path . StartsWith ( ProtoFluxPath ) ;
154+
155+ return ConfigSection . AlwaysSearchRoot
156+ ? ( isProtoFlux
157+ ? WorkerInitializer . ComponentLibrary . GetSubcategory ( ProtoFluxPath )
158+ : WorkerInitializer . ComponentLibrary )
159+ : eventData . RootCategory ;
160+ }
144161 }
145162}
0 commit comments