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; } }
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; } } }