Ejemplo n.º 1
0
        internal void Queue(Interactive Mouseable, RequestType Type, Vector2f MousePosition)
        {
            switch (Type)
            {
            case RequestType.Focus:
                _Changes.First  = Mouseable;
                _Changes.Second = Type;
                _Changes.Third  = MousePosition;
                break;

            case RequestType.Leave:
                Mouseable.Acknowledge(Type, MousePosition);
                break;

            case RequestType.MouseOut:
                Mouseable.Acknowledge(Type, MousePosition);
                break;

            case RequestType.MouseOver:
                _Changes.First  = Mouseable;
                _Changes.Second = Type;
                _Changes.Third  = MousePosition;
                break;

            case RequestType.Block:
                _Changes.First = null;
                break;
            }
        }
Ejemplo n.º 2
0
        internal void Acknowledge(MouseController.RequestType Request, Vector2f Position, bool Primary = true)
        {
            if (_Enabled)
            {
                if (_Links != null)
                {
                    foreach (Interactive Link in _Links)
                    {
                        Link.Acknowledge(Request, Position, false);
                    }
                }
                if (_Parent != null)
                {
                    _Parent.Acknowledge(Request, Position, false);
                }
                switch (Request)
                {
                case MouseController.RequestType.Focus:
                    if (!_Right)
                    {
                        if (OnClick != null)
                        {
                            OnClick(this, new MouseEventArgs(Position));
                        }
                    }
                    else
                    {
                        if (OnRightClick != null)
                        {
                            OnRightClick(this, new MouseEventArgs(Position));
                        }
                    }
                    break;

                case MouseController.RequestType.Leave:
                    if (Primary && OnLeave != null)
                    {
                        OnLeave(this, new MouseEventArgs(Position));
                    }
                    break;

                case MouseController.RequestType.MouseOut:
                    if (Primary && OnMouseOut != null)
                    {
                        OnMouseOut(this, new MouseEventArgs(Position));
                    }
                    if (Primary)
                    {
                        _HoverAck = false;
                    }
                    break;

                case MouseController.RequestType.MouseOver:
                    if ((Primary || !_HoverAck) && OnMouseOver != null)
                    {
                        OnMouseOver(this, new MouseEventArgs(Position));
                    }
                    _HoverAck = true;
                    break;
                }
            }
        }