No Description
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.

DrawSearchField.cs 2.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using System;
  2. using System.Reflection;
  3. using UnityEditor;
  4. using UnityEditor.IMGUI.Controls;
  5. using UnityEngine;
  6. using PlasticGui;
  7. namespace Unity.PlasticSCM.Editor.UI
  8. {
  9. internal static class DrawSearchField
  10. {
  11. internal static void For(
  12. SearchField searchField,
  13. TreeView treeView,
  14. float width)
  15. {
  16. Rect searchFieldRect = GUILayoutUtility.GetRect(
  17. width / 2f, EditorGUIUtility.singleLineHeight);
  18. searchFieldRect.y += 2f;
  19. treeView.searchString = Draw(
  20. searchField,
  21. searchFieldRect,
  22. treeView.searchString);
  23. if (!string.IsNullOrEmpty(treeView.searchString))
  24. return;
  25. GUI.Label(searchFieldRect, PlasticLocalization.GetString(
  26. PlasticLocalization.Name.SearchTooltip), UnityStyles.Search);
  27. }
  28. static string Draw(
  29. SearchField searchField,
  30. Rect searchFieldRect,
  31. string searchString)
  32. {
  33. #if UNITY_2019
  34. if (!mIsToolbarSearchFieldSearched)
  35. {
  36. mIsToolbarSearchFieldSearched = true;
  37. InternalToolbarSearchField = FindToolbarSearchField();
  38. }
  39. if (InternalToolbarSearchField != null)
  40. {
  41. return (string)InternalToolbarSearchField.Invoke(
  42. null,
  43. new object[] { searchFieldRect, searchString, false });
  44. }
  45. #endif
  46. return searchField.OnToolbarGUI(
  47. searchFieldRect, searchString);
  48. }
  49. #if UNITY_2019
  50. static MethodInfo FindToolbarSearchField()
  51. {
  52. return EditorGUIType.GetMethod(
  53. "ToolbarSearchField",
  54. BindingFlags.Static | BindingFlags.NonPublic,
  55. null,
  56. new Type[] { typeof(Rect), typeof(string), typeof(bool) },
  57. null);
  58. }
  59. static bool mIsToolbarSearchFieldSearched;
  60. static MethodInfo InternalToolbarSearchField;
  61. static readonly Type EditorGUIType = typeof(EditorGUI);
  62. #endif
  63. }
  64. }