예제 #1
0
        private ISupportDrop HitTestElementTree(ComponentThemableElementTree elementTree, Point screenMouse, out Point resultDropLocation)
        {
            if (elementTree == null)
            {
                resultDropLocation = Point.Empty;
                return(null);
            }

            resultDropLocation = Point.Empty;
            Point        clientMouse  = elementTree.Control.PointToClient(screenMouse);
            RadElement   hitElement   = elementTree.GetElementAtPoint(clientMouse);
            ISupportDrag dragInstance = this.Context as ISupportDrag;

            ISupportDrop dropTarget = null;
            ISupportDrop hitTarget  = null;

            while (hitElement != null)
            {
                hitTarget  = hitElement as ISupportDrop;
                dropTarget = null;

                if (hitTarget != null && hitTarget.AllowDrop)
                {
                    RadElement dropTargetElement = hitTarget as RadElement;

                    if (dropTargetElement != null)
                    {
                        resultDropLocation = dropTargetElement.PointFromControl(clientMouse);
                    }
                    else
                    {
                        resultDropLocation = clientMouse;
                    }

                    dropTarget = hitTarget;
                }

                //raise PreviewDropTarget event
                PreviewDropTargetEventArgs args = new PreviewDropTargetEventArgs(dragInstance, hitTarget);
                args.DropTarget = dropTarget;
                this.OnPreviewDropTarget(args);
                dropTarget = args.DropTarget;

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

                hitElement = hitElement.Parent;
            }

            return(null);
        }
예제 #2
0
 public virtual bool OnMouseUp(MouseEventArgs e)
 {
     if (!this.enable || this.DisableMouseEvents)
     {
         return(false);
     }
     if (this.OwnerControl.Capture && this.ItemCapture != null)
     {
         this.ItemCapture.CallDoMouseUp(e);
     }
     else if (this.selectedElement != null)
     {
         this.selectedElement.CallDoMouseUp(e);
     }
     else if (this.Owner != null)
     {
         ComponentThemableElementTree elementTree = this.Owner.ElementTree;
         elementTree.GetElementAtPoint((RadElement)elementTree.RootElement, e.Location, (List <RadElement>)null)?.CallDoMouseUp(e);
     }
     return(false);
 }
예제 #3
0
        private ISupportDrop HitTestElementTree(
            ComponentThemableElementTree elementTree,
            Point screenMouse,
            out Point resultDropLocation)
        {
            if (elementTree == null)
            {
                resultDropLocation = Point.Empty;
                return((ISupportDrop)null);
            }
            resultDropLocation = Point.Empty;
            Point        client      = elementTree.Control.PointToClient(screenMouse);
            RadElement   radElement1 = elementTree.GetElementAtPoint(client);
            ISupportDrag context     = this.Context as ISupportDrag;

            for (; radElement1 != null; radElement1 = radElement1.Parent)
            {
                ISupportDrop hitTarget   = radElement1 as ISupportDrop;
                ISupportDrop supportDrop = (ISupportDrop)null;
                if (hitTarget != null && hitTarget.AllowDrop)
                {
                    RadElement radElement2 = hitTarget as RadElement;
                    resultDropLocation = radElement2 == null ? client : radElement2.PointFromControl(client);
                    supportDrop        = hitTarget;
                }
                PreviewDropTargetEventArgs e = new PreviewDropTargetEventArgs(context, hitTarget);
                e.DropTarget = supportDrop;
                this.OnPreviewDropTarget(e);
                ISupportDrop dropTarget = e.DropTarget;
                if (dropTarget != null)
                {
                    return(dropTarget);
                }
            }
            return((ISupportDrop)null);
        }