public void HideHoverButtonList()
        {
            bool hide = true;

            if (IntersectingMouse())
            {
                hide = false;
            }
            if (HoverButtonList.IntersectingMouse())
            {
                hide = false;
            }
            for (int i = 0; i < HoverButtonList.Count; i++)
            {
                if (HoverButtonList[i].ClickButtonList.IntersectingMouse() ||
                    HoverButtonList[i].HoverButtonList.IntersectingMouse())
                {
                    hide = false;
                    break;
                }
            }
            if (!DrawEnabled)
            {
                hide = true;
            }
            if (hide)
            {
                HoverButtonList.Hide();
            }
        }
 public virtual void Draw(SpriteBatch sb)
 {
     if (DrawEnabled)
     {
         ClickButtonList.Draw(sb);
         HoverButtonList.Draw(sb);
     }
 }
 public virtual void OnHover()
 {
     hovering_ = true;
     HoverButtonList.Show();
     if (Hover != null)
     {
         Hover(this);
     }
 }
 public virtual void OnRightClicked()
 {
     rightPressing_ = false;
     ClickButtonList.Show();
     HoverButtonList.Hide();
     if (RightClicked != null)
     {
         RightClicked(this);
     }
 }
 public virtual void OnClicked()
 {
     pressing_ = false;
     ClickButtonList.Hide();
     HoverButtonList.Hide();
     if (Clicked != null)
     {
         Clicked(this);
     }
 }
 public virtual void Update()
 {
     if (!eventsPolled_ && !reset_ && (hovering_ || pressing_ || rightPressing_))
     {
         OnResetState();
     }
     if (Mouse.GetState().LeftButton == ButtonState.Pressed && ClickButtonList.Showing && !ClickButtonList.IntersectingMouse() ||
         Mouse.GetState().RightButton == ButtonState.Pressed && ClickButtonList.Showing && !ClickButtonList.IntersectingMouse())
     {
         HideClickButtonList();
     }
     HideHoverButtonList();
     if (newPos != Position)
     {
         ClickButtonList.UpdatePosition(Position);
         HoverButtonList.UpdatePosition(Position);
     }
     newPos        = Position;
     eventsPolled_ = false;
 }