private void SetupFilters() { filtersMenu.ShowTextTooltipOnSizeChange(-16); filtersMenu.clickable.clicked += () => { if (PackageManagerFiltersWindow.instance != null) { return; } var page = PageManager.instance.GetCurrentPage(); if (page != null && PackageManagerFiltersWindow.ShowAtPosition(GUIUtility.GUIToScreenRect(filtersMenu.worldBound), page.tab, page.filters)) { filtersMenu.pseudoStates |= PseudoStates.Active; PackageManagerFiltersWindow.instance.OnFiltersChanged += filters => { UpdateFiltersMenuText(filters); page.UpdateFilters(filters); }; PackageManagerFiltersWindow.instance.OnClose += () => { filtersMenu.pseudoStates &= ~PseudoStates.Active; }; } }; clearFiltersButton.clickable.clicked += () => { var page = PageManager.instance.GetCurrentPage(); page.ClearFilters(); UpdateFiltersMenuText(page.filters); }; }
public static bool ShowAtPosition(Rect rect, PackageFilterTab tab, PageFilters filters) { if (s_Window != null) { return(false); } var nowMilliSeconds = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond; var justClosed = nowMilliSeconds < s_LastClosedTime + 150; if (!justClosed) { Event.current?.Use(); if (tab != PackageFilterTab.AssetStore) { return(false); } s_Window = CreateInstance <AssetStoreFiltersWindow>(); s_Window.Init(rect, filters); } return(!justClosed); }
private void OnDisable() { if (s_Window == null) { return; } if (m_DelayedUpdate) { EditorApplication.update -= DelayedUpdatePageFilters; OnFiltersChanged?.Invoke(m_Filters); } s_LastClosedTime = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond; s_Window = null; OnClose?.Invoke(); }