Exemple #1
0
 public RadElement GetElementAtPoint(
   RadElement parent,
   Point point,
   List<RadElement> foundElements,
   Predicate<RadElement> predicate)
 {
   if (parent.Visibility != ElementVisibility.Visible)
     return (RadElement) null;
   ChildrenListOptions options = ChildrenListOptions.ZOrdered | ChildrenListOptions.ReverseOrder | ChildrenListOptions.IncludeOnlyVisible;
   Rectangle clientRectangle = this.Control.ClientRectangle;
   foreach (RadElement child in parent.GetChildren(options))
   {
     if (child.ElementState == ElementState.Loaded && child.HitTest(point))
     {
       if (foundElements != null && !(child is BorderPrimitive))
         foundElements.Add(child);
       RadElement elementAtPoint = this.GetElementAtPoint(child, point, foundElements, predicate);
       if (elementAtPoint != null)
         return elementAtPoint;
       if (predicate == null || predicate(child))
         return child;
     }
   }
   return (RadElement) null;
 }
        internal RadElement GetElementAtPoint(RadElement parent, Point point, List <RadElement> foundElements)
        {
            if (parent.Visibility != ElementVisibility.Visible)
            {
                return(null);
            }

            ChildrenListOptions childrenFlags = ChildrenListOptions.ZOrdered |
                                                ChildrenListOptions.ReverseOrder |
                                                ChildrenListOptions.IncludeOnlyVisible;

            Rectangle client = this.Control.ClientRectangle;

            foreach (RadElement element in parent.GetChildren(childrenFlags))
            {
                if (element.ElementState != ElementState.Loaded)
                {
                    continue;
                }

                if (element.HitTest(point))
                {
                    bool addElement = (foundElements != null) && !(element is BorderPrimitive);
                    if (addElement)
                    {
                        foundElements.Add(element);
                    }

                    RadElement res = GetElementAtPoint(element, point, foundElements);

                    if (res != null)
                    {
                        return(res);
                    }

                    if (element.ShouldHandleMouseInput)
                    {
                        return(element);
                    }
                }
            }

            return(null);
        }