123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- 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
- }
- }
|