@@ -778,28 +778,47 @@ public float DrawOnGUI( SearchResult searchResult, EditorWindow window, float sc
778778 IsExpanded = true ;
779779 } ) ;
780780
781- if ( searchResult != null && searchResult . NumberOfGroups > 1 && ! string . IsNullOrEmpty ( treeViewState . searchTerm ) )
781+ if ( ! string . IsNullOrEmpty ( treeViewState . searchTerm ) )
782782 {
783783 if ( contextMenu . GetItemCount ( ) > 0 )
784784 contextMenu . AddSeparator ( "" ) ;
785785
786- contextMenu . AddItem ( new GUIContent ( "Apply Search to All Results" ) , false , ( ) =>
786+ if ( searchResult != null && searchResult . NumberOfGroups > 1 )
787787 {
788- for ( int i = 0 ; i < searchResult . NumberOfGroups ; i ++ )
788+ contextMenu . AddItem ( new GUIContent ( "Apply Search to All Results" ) , false , ( ) =>
789789 {
790- if ( searchResult [ i ] . treeView == null )
791- continue ;
790+ for ( int i = 0 ; i < searchResult . NumberOfGroups ; i ++ )
791+ {
792+ if ( searchResult [ i ] . treeView == null )
793+ continue ;
792794
793- string previousSearchTerm = searchResult [ i ] . treeViewState . searchTerm ?? "" ;
794- SearchResultTreeView . SearchMode previousSearchMode = searchResult [ i ] . treeViewState . searchMode ;
795+ string previousSearchTerm = searchResult [ i ] . treeViewState . searchTerm ?? "" ;
796+ SearchResultTreeView . SearchMode previousSearchMode = searchResult [ i ] . treeViewState . searchMode ;
795797
796- searchResult [ i ] . treeViewState . searchTerm = treeViewState . searchTerm ?? "" ;
797- searchResult [ i ] . treeViewState . searchMode = treeViewState . searchMode ;
798+ searchResult [ i ] . treeViewState . searchTerm = treeViewState . searchTerm ?? "" ;
799+ searchResult [ i ] . treeViewState . searchMode = treeViewState . searchMode ;
798800
799- if ( treeViewState . searchTerm != previousSearchTerm || treeViewState . searchMode != previousSearchMode )
800- searchResult [ i ] . treeView . RefreshSearch ( previousSearchTerm ) ;
801- }
802- } ) ;
801+ if ( treeViewState . searchTerm != previousSearchTerm || treeViewState . searchMode != previousSearchMode )
802+ searchResult [ i ] . treeView . RefreshSearch ( previousSearchTerm ) ;
803+ }
804+ } ) ;
805+ }
806+
807+ IList < TreeViewItem > treeViewRows = treeView . GetRows ( ) ;
808+ if ( treeViewRows . Count > 1 ) // References are at depth 1 so if there are any references, at least 2 rows must exist
809+ {
810+ contextMenu . AddItem ( new GUIContent ( "Hide Search Results" ) , false , ( ) =>
811+ {
812+ List < int > removedRows = new List < int > ( treeViewRows . Count ) ;
813+ for ( int i = treeViewRows . Count - 1 ; i >= 0 ; i -- )
814+ {
815+ if ( treeViewRows [ i ] . depth > 0 )
816+ removedRows . Add ( treeViewRows [ i ] . id ) ;
817+ }
818+
819+ treeView . HideItems ( removedRows ) ;
820+ } ) ;
821+ }
803822 }
804823 }
805824
0 commit comments