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();
        }
Пример #2
0
        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);
        }