private static bool RecurseMouseMove(int X, int Y, Gump g, int mX, int mY, MouseButtons mb) { if (g.Visible && (g.m_NonRestrictivePicking || (((mX >= X) && (mX < (X + g.Width))) && ((mY >= Y) && (mY < (Y + g.Height)))))) { Gump[] gumpArray = g.Children.ToArray(); for (int i = gumpArray.Length - 1; i >= 0; i--) { Gump gump = gumpArray[i]; if (RecurseMouseMove(X + gump.X, Y + gump.Y, gump, mX, mY, mb)) { return true; } } if (!g.m_NonRestrictivePicking || (((mX >= X) && (mX < (X + g.Width))) && ((mY >= Y) && (mY < (Y + g.Height))))) { if ((m_Modal == null) && g.HitTest(mX - X, mY - Y)) { if (m_LastOver == g) { g.OnMouseMove(mX - X, mY - Y, mb); } else { if (m_LastOver != null) { m_LastOver.OnMouseLeave(); } g.OnMouseEnter(mX - X, mY - Y, mb); if (g.Tooltip != null) { m_TipDelay = new TimeDelay(g.Tooltip.Delay); } else { m_TipDelay = null; } m_LastOver = g; } return true; } if (((m_Modal != null) && g.IsChildOf(m_Modal)) && g.HitTest(mX - X, mY - Y)) { if (m_LastOver == g) { g.OnMouseMove(mX - X, mY - Y, mb); } else { if (m_LastOver != null) { m_LastOver.OnMouseLeave(); } g.OnMouseEnter(mX - X, mY - Y, mb); if (g.Tooltip != null) { m_TipDelay = new TimeDelay(g.Tooltip.Delay); } else { m_TipDelay = null; } m_LastOver = g; } return true; } } } return false; }