EditorWindowFocus.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System;
  2. using UnityEditor;
  3. using UnityEditorInternal;
  4. namespace Unity.PlasticSCM.Editor.UI
  5. {
  6. [InitializeOnLoad]
  7. internal static class EditorWindowFocus
  8. {
  9. internal static event Action OnApplicationActivated;
  10. internal static event Action OnApplicationDeactivated;
  11. static EditorWindowFocus()
  12. {
  13. EditorApplication.update += Update;
  14. }
  15. static void Update()
  16. {
  17. bool isApplicationActive = InternalEditorUtility.isApplicationActive;
  18. if (!mLastIsApplicationFocused && isApplicationActive)
  19. {
  20. mLastIsApplicationFocused = isApplicationActive;
  21. if (OnApplicationActivated != null)
  22. OnApplicationActivated();
  23. return;
  24. }
  25. if (mLastIsApplicationFocused && !isApplicationActive)
  26. {
  27. mLastIsApplicationFocused = isApplicationActive;
  28. if (OnApplicationDeactivated != null)
  29. OnApplicationDeactivated();
  30. return;
  31. }
  32. }
  33. static bool mLastIsApplicationFocused;
  34. }
  35. }