You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.1 KiB
75 lines
2.1 KiB
using System; |
|
using System.Reflection; |
|
|
|
using UnityEditor; |
|
using UnityEditor.IMGUI.Controls; |
|
using UnityEngine; |
|
|
|
using PlasticGui; |
|
|
|
namespace Unity.PlasticSCM.Editor.UI |
|
{ |
|
internal static class DrawSearchField |
|
{ |
|
internal static void For( |
|
SearchField searchField, |
|
TreeView treeView, |
|
float width) |
|
{ |
|
Rect searchFieldRect = GUILayoutUtility.GetRect( |
|
width / 2f, EditorGUIUtility.singleLineHeight); |
|
searchFieldRect.y += 2f; |
|
|
|
treeView.searchString = Draw( |
|
searchField, |
|
searchFieldRect, |
|
treeView.searchString); |
|
|
|
if (!string.IsNullOrEmpty(treeView.searchString)) |
|
return; |
|
|
|
GUI.Label(searchFieldRect, PlasticLocalization.GetString( |
|
PlasticLocalization.Name.SearchTooltip), UnityStyles.Search); |
|
} |
|
|
|
static string Draw( |
|
SearchField searchField, |
|
Rect searchFieldRect, |
|
string searchString) |
|
{ |
|
#if UNITY_2019 |
|
if (!mIsToolbarSearchFieldSearched) |
|
{ |
|
mIsToolbarSearchFieldSearched = true; |
|
InternalToolbarSearchField = FindToolbarSearchField(); |
|
} |
|
|
|
if (InternalToolbarSearchField != null) |
|
{ |
|
return (string)InternalToolbarSearchField.Invoke( |
|
null, |
|
new object[] { searchFieldRect, searchString, false }); |
|
} |
|
#endif |
|
return searchField.OnToolbarGUI( |
|
searchFieldRect, searchString); |
|
} |
|
|
|
#if UNITY_2019 |
|
static MethodInfo FindToolbarSearchField() |
|
{ |
|
return EditorGUIType.GetMethod( |
|
"ToolbarSearchField", |
|
BindingFlags.Static | BindingFlags.NonPublic, |
|
null, |
|
new Type[] { typeof(Rect), typeof(string), typeof(bool) }, |
|
null); |
|
} |
|
|
|
static bool mIsToolbarSearchFieldSearched; |
|
static MethodInfo InternalToolbarSearchField; |
|
|
|
static readonly Type EditorGUIType = typeof(EditorGUI); |
|
#endif |
|
} |
|
}
|
|
|