UnityEditor.EditorGUIExt.DoRepeatButton C# (CSharp) Method

DoRepeatButton() private static method

private static DoRepeatButton ( Rect position, GUIContent content, GUIStyle style, FocusType focusType ) : bool
position UnityEngine.Rect
content UnityEngine.GUIContent
style UnityEngine.GUIStyle
focusType FocusType
return bool
        private static bool DoRepeatButton(Rect position, GUIContent content, GUIStyle style, FocusType focusType)
        {
            int controlID = GUIUtility.GetControlID(repeatButtonHash, focusType, position);
            EventType typeForControl = Event.current.GetTypeForControl(controlID);
            if (typeForControl != EventType.MouseDown)
            {
                if (typeForControl != EventType.MouseUp)
                {
                    if (typeForControl != EventType.Repaint)
                    {
                        return false;
                    }
                    style.Draw(position, content, controlID);
                    return ((controlID == GUIUtility.hotControl) && position.Contains(Event.current.mousePosition));
                }
            }
            else
            {
                if (position.Contains(Event.current.mousePosition))
                {
                    GUIUtility.hotControl = controlID;
                    Event.current.Use();
                }
                return false;
            }
            if (GUIUtility.hotControl == controlID)
            {
                GUIUtility.hotControl = 0;
                Event.current.Use();
                return position.Contains(Event.current.mousePosition);
            }
            return false;
        }

Usage Example

示例#1
0
        private static bool ScrollerRepeatButton(int scrollerID, Rect rect, GUIStyle style)
        {
            bool result = false;

            if (EditorGUIExt.DoRepeatButton(rect, GUIContent.none, style, FocusType.Passive))
            {
                bool flag = EditorGUIExt.scrollControlID != scrollerID;
                EditorGUIExt.scrollControlID = scrollerID;
                if (flag)
                {
                    result = true;
                    EditorGUIExt.nextScrollStepTime = Time.realtimeSinceStartup + 0.001f * (float)EditorGUIExt.firstScrollWait;
                }
                else if (Time.realtimeSinceStartup >= EditorGUIExt.nextScrollStepTime)
                {
                    result = true;
                    EditorGUIExt.nextScrollStepTime = Time.realtimeSinceStartup + 0.001f * (float)EditorGUIExt.scrollWait;
                }
                if (Event.current.type == EventType.Repaint)
                {
                    HandleUtility.Repaint();
                }
            }
            return(result);
        }