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