public void Init(Rect buttonRect) { m_ButtonRectScreenPos = EditorGUIUtility.GUIToScreenRect(buttonRect); if (m_State == null) { m_State = new AdvancedDropdownState(); } if (m_DataSource == null) { m_DataSource = new MultiLevelDataSource(); } if (m_Gui == null) { m_Gui = new AdvancedDropdownGUI(m_DataSource); } m_Gui.state = m_State; // Has to be done before calling Show / ShowWithMode buttonRect = GUIUtility.GUIToScreenRect(buttonRect); OnDirtyList(); m_CurrentlyRenderedTree = hasSearch ? m_DataSource.searchTree : m_DataSource.mainTree; ShowAsDropDown(buttonRect, CalculateWindowSize(buttonRect), GetLocationPriority()); if (setInitialSelectionPosition) { m_InitialSelectionPosition = m_Gui.GetSelectionHeight(m_DataSource, buttonRect); } wantsMouseMove = true; SetSelectionFromState(); }
public void Show(Rect rect) { if (m_WindowInstance != null) { m_WindowInstance.Close(); m_WindowInstance = null; } if (m_DataSource == null) { m_DataSource = new CallbackDataSource(BuildRoot); } if (m_Gui == null) { m_Gui = new AdvancedDropdownGUI(m_DataSource); } m_WindowInstance = ScriptableObject.CreateInstance <AdvancedDropdownWindow>(); if (m_MinimumSize != Vector2.zero) { m_WindowInstance.minSize = m_MinimumSize; } m_WindowInstance.state = m_State; m_WindowInstance.dataSource = m_DataSource; m_WindowInstance.gui = m_Gui; m_WindowInstance.windowClosed += (w) => ItemSelected(w.GetSelectedItem()); m_WindowInstance.Init(rect); }