@@ -12,8 +12,9 @@ internal class InspectorPlus: EditorWindow, IHasCustomMenu {
1212 "or you may likely to corrupt your project or even crashes the editor!" ;
1313 private readonly List < InspectorDrawer [ ] > drawers = new List < InspectorDrawer [ ] > ( ) ;
1414 private readonly TypeMatcher typeMatcher = new TypeMatcher ( ) ;
15+ private static readonly string [ ] searchModes = new [ ] { "Selected Component Members" , "Types" } ;
1516 private string searchText ;
16- private bool shouldSearchTypes ;
17+ private int searchMode = 0 ;
1718 private Vector2 scrollPos ;
1819 private bool initialized ;
1920 private bool autoUpdateValues ;
@@ -36,6 +37,10 @@ private void OnDisable() {
3637 typeMatcher . OnRequestRedraw -= Repaint ;
3738 }
3839
40+ private void OnDestroy ( ) {
41+ typeMatcher . Dispose ( ) ;
42+ }
43+
3944 private void Initialize ( ) {
4045 if ( initialized ) return ;
4146 autoUpdateValues = EditorPrefs . GetBool ( "inspectorplus_autoupdate" , true ) ;
@@ -56,17 +61,9 @@ private void OnGUI() {
5661 GUILayout . BeginHorizontal ( EditorStyles . toolbar ) ;
5762 GUI . changed = false ;
5863 GUILayout . Space ( 8 ) ;
59- searchText = EditorGUILayout . TextField ( searchText , Helper . GetGUIStyle ( "ToolbarSeachTextField" ) ) ;
60- if ( GUILayout . Button ( GUIContent . none , Helper . GetGUIStyle ( string . IsNullOrEmpty ( searchText ) ? "ToolbarSeachCancelButtonEmpty" : "ToolbarSeachCancelButton" ) ) ) {
61- searchText = string . Empty ;
62- GUI . FocusControl ( null ) ;
63- }
64- if ( GUI . changed )
65- IterateDrawers < ComponentMethodDrawer > ( methodDrawer => methodDrawer . Filter = searchText ) ;
64+ searchText = Helper . ToolbarSearchField ( searchText , searchModes , ref searchMode ) ;
6665 GUILayout . Space ( 8 ) ;
67- if ( shouldSearchTypes = GUILayout . Toggle ( shouldSearchTypes , EditorGUIUtility . IconContent ( "d_FilterByType" , "Search Types" ) , EditorStyles . toolbarButton , GUILayout . ExpandWidth ( false ) ) )
68- typeMatcher . SearchText = searchText ;
69- EditorGUI . BeginDisabledGroup ( instanceIds == null || instanceIds . Length == 0 ) ;
66+ EditorGUI . BeginDisabledGroup ( instanceIds == null || instanceIds . Length == 0 || searchMode != 0 ) ;
7067 if ( GUILayout . Button ( EditorGUIUtility . IconContent ( "TreeEditor.Trash" , "Destroy Selection" ) ,
7168 EditorStyles . toolbarButton , GUILayout . ExpandWidth ( false ) ) )
7269 DestroyAll ( ) ;
@@ -75,12 +72,18 @@ private void OnGUI() {
7572 GUI . changed = false ;
7673 scrollPos = GUILayout . BeginScrollView ( scrollPos ) ;
7774 EditorGUILayout . HelpBox ( description , MessageType . Warning ) ;
78- foreach ( var drawer in drawers . SelectMany ( drawer => drawer ) ) {
79- drawer . searchText = searchText ;
80- drawer . Draw ( ) ;
75+ switch ( searchMode ) {
76+ case 0 :
77+ foreach ( var drawer in drawers . SelectMany ( drawer => drawer ) ) {
78+ drawer . searchText = searchText ;
79+ drawer . Draw ( ) ;
80+ }
81+ break ;
82+ case 1 :
83+ typeMatcher . SearchText = searchText ;
84+ typeMatcher . Draw ( ) ;
85+ break ;
8186 }
82- if ( shouldSearchTypes )
83- typeMatcher . Draw ( ) ;
8487 GUILayout . FlexibleSpace ( ) ;
8588 GUILayout . Space ( EditorGUIUtility . singleLineHeight / 2 ) ;
8689 GUILayout . EndScrollView ( ) ;
0 commit comments