protected virtual bool CanDragOver(DropPosition dropPosition, TreeNodeElement targetNodeElement) { RadTreeViewElement targetTreeView = targetNodeElement.TreeViewElement; if (!targetNodeElement.Enabled || !targetTreeView.ElementTree.Control.AllowDrop || !this.IsInValidState(targetTreeView)) { return(false); } RadTreeNode targetNode = targetNodeElement.Data; List <RadTreeNode> nodes = new List <RadTreeNode>(draggedNode.TreeViewElement.SelectedNodes); // If the count is empty, we are in single selection mode if (nodes.Count == 0) { nodes.Add(draggedNode); } foreach (RadTreeNode selected in nodes) { if (selected == targetNode) { return(false); } RadTreeNode parent = targetNode.Parent; while (parent != null) { if (parent == selected) { return(false); } parent = parent.Parent; } if (dropPosition == DropPosition.AsChildNode && selected.Parent == targetNode) { return(false); } } if (dropPosition == DropPosition.AsChildNode) { targetTreeView.AutoExpand(targetNode); } targetTreeView.AutoScroll(targetNodeElement); return(true); }
protected virtual bool CanDragOver(DropPosition dropPosition, TreeNodeElement targetNodeElement) { RadTreeViewElement treeViewElement = targetNodeElement.TreeViewElement; if (!targetNodeElement.Enabled || !treeViewElement.ElementTree.Control.AllowDrop || !this.IsInValidState(treeViewElement) || !targetNodeElement.Data.AllowDrop && dropPosition == DropPosition.AsChildNode) { return(false); } RadTreeNode data = targetNodeElement.Data; List <RadTreeNode> radTreeNodeList = new List <RadTreeNode>((IEnumerable <RadTreeNode>) this.draggedNode.TreeViewElement.SelectedNodes); if (radTreeNodeList.Count == 0) { radTreeNodeList.Add(this.draggedNode); } foreach (RadTreeNode radTreeNode in radTreeNodeList) { if (radTreeNode == data) { return(false); } for (RadTreeNode parent = data.Parent; parent != null; parent = parent.Parent) { if (parent == radTreeNode) { return(false); } } if (dropPosition == DropPosition.AsChildNode && radTreeNode.Parent == data) { return(false); } } if (dropPosition == DropPosition.AsChildNode && !data.Expanded && data.HasNodes) { treeViewElement.AutoExpand(data); this.HintWindow.Hide(); this.HintWindow.Show(); } if (treeViewElement.AutoScrollOnDragging(targetNodeElement)) { this.HintWindow.Hide(); this.HintWindow.Show(); } return(true); }