예제 #1
0
            protected internal override void ExecuteDefaultActionAtTarget(EventBase evt)
            {
                base.ExecuteDefaultActionAtTarget(evt);

                if ((evt as MouseDownEvent)?.button == (int)MouseButton.LeftMouse)
                {
                    OnMouseDown(evt as MouseDownEvent);
                }
                else if ((evt as KeyDownEvent)?.character == '\n')
                {
                    OnKeyboardEnter();
                }
                else if (evt.GetEventTypeId() == DragUpdatedEvent.TypeId())
                {
                    OnDragUpdated(evt);
                }
                else if (evt.GetEventTypeId() == DragPerformEvent.TypeId())
                {
                    OnDragPerform(evt);
                }
                else if (evt.GetEventTypeId() == DragLeaveEvent.TypeId())
                {
                    OnDragLeave();
                }
            }
        public virtual bool DragPerform(DragPerformEvent evt, IEnumerable <ISelectable> selection, IDropTarget dropTarget, ISelection dragSource)
        {
            HandleDragAndDropEvent(evt);

            // Remove the current preview with no animation
            RemovePreview(false);

            if (m_CurrentInsertIndex != -1)
            {
                // Notify the model that an element should be inserted at the specified index
                if (graphView != null && graphView.elementsInsertedToStackNode != null)
                {
                    graphView.elementsInsertedToStackNode(this, m_CurrentInsertIndex, m_DraggedElements);
                }

                int cnt = 0;
                foreach (GraphElement draggedElement in m_DraggedElements)
                {
                    InsertElement(m_CurrentInsertIndex + cnt++, draggedElement);
                }
            }

            dragEntered       = false;
            m_DraggedElements = null;

            return(true);
        }
예제 #3
0
        private void OnDragPerformEvent(DragPerformEvent e)
        {
            var scripts = DragAndDrop.objectReferences.OfType <MonoScript>();

            foreach (var script in scripts)
            {
                var scriptClass = script.GetClass();

                var match = _namespaceRegex.Match(script.text);

                var namespaceName = (match.Success ? match.Groups[2].Value : "").Trim();

                var type  = typeof(IComponentData);
                var types = AppDomain.CurrentDomain.GetAssemblies()
                            .SelectMany(s => s.GetTypes())
                            .Where(p => type.IsAssignableFrom(p)).ToList();

                var dropedType = types.FirstOrDefault(t => t.Name == script.name && t.Namespace == namespaceName);

                if (dropedType != null)
                {
                    Debug.Log(dropedType.FullName);
                }
                else
                {
                    Debug.Log("Can not find");
                }
            }
            DragAndDrop.AcceptDrag();
        }
        /// <inheritdoc />
        public override void OnDragPerform(DragPerformEvent e)
        {
            var dropElements = DragSource.GetSelection();

            var contentViewContainer = (e.target as GraphView)?.ContentViewContainer ?? e.target as VisualElement;

            var variablesToCreate = dropElements
                                    .OfType <IVariableDeclarationModel>()
                                    .Select((e1, i) => (
                                                e1,
                                                GUID.Generate().ToSerializableGUID(),
                                                contentViewContainer.WorldToLocal(e.mousePosition) + i * DragDropSpacer * Vector2.down))
                                    .ToList();

            var droppedNodes = dropElements.OfType <INodeModel>();

            if (droppedNodes.Any(e2 => !(e2 is IVariableNodeModel)) && variablesToCreate.Any())
            {
                // no way to handle this ATM
                throw new ArgumentException("Unhandled case, dropping blackboard/variables fields and nodes at the same time");
            }

            if (variablesToCreate.Any())
            {
                Stencil.OnDragAndDropVariableDeclarations(Dispatcher, variablesToCreate);
            }
        }
예제 #5
0
        void OnDragPerformEvent(DragPerformEvent e)
        {
            Vector2 localPos = (e.currentTarget as VisualElement).ChangeCoordinatesTo(contentViewContainer, e.localMousePosition);

            var selection = DragAndDrop.GetGenericData("DragSelection") as List <ISelectable>;

            if (selection != null)
            {
                // Blackboard
                if (selection.OfType <BlackboardField>().Any())
                {
                    IEnumerable <BlackboardField> fields = selection.OfType <BlackboardField>();
                    foreach (BlackboardField field in fields)
                    {
                        CreateNode(field, localPos);
                    }
                }
            }
            else
            {
                // Handle unity objects
                var objects = DragAndDrop.objectReferences;
                foreach (Object obj in objects)
                {
                    if (ValidateObjectForDrop(obj))
                    {
                        CreateNode(obj, localPos);
                    }
                }
            }
        }
예제 #6
0
        void OnDragPerformEvent(DragPerformEvent e)
        {
            SetDragIndicatorVisible(false);
            var selection = DragAndDrop.GetGenericData("DragSelection") as List<ISelectable>;
            if (selection == null)
            {
                return;
            }

            var category = selection.OfType<VFXBlackboardCategory>().FirstOrDefault();
            if (category == null)
            {
                return;
            }

            if (m_InsertIndex != -1)
            {
                if (m_InsertIndex > IndexOf(category))
                    --m_InsertIndex;
                controller.MoveCategory(category.title, m_InsertIndex - IndexOf(m_DefaultCategory) - 1);
            }

            SetDragIndicatorVisible(false);
            e.StopPropagation();
        }
        void OnDragPerformEvent(DragPerformEvent e)
        {
            DragAndDrop.AcceptDrag();

            object draggedObject = DragAndDrop.GetGenericData(DraggableLabel.s_DragDataType);

            if (draggedObject != null && draggedObject is DraggableLabel)
            {
                var label = (DraggableLabel)draggedObject;
                label.StopDraggingBox(e.localMousePosition);
            }
            else
            {
                List <string> names = new List <string>();

                if (draggedObject != null)
                {
                    names.Add(draggedObject.ToString());
                }

                foreach (var obj in DragAndDrop.objectReferences)
                {
                    names.Add(obj.name);
                }

                var newBox = new DraggableLabel();
                newBox.AddToClassList("box");
                newBox.style.top  = e.localMousePosition.y;
                newBox.style.left = e.localMousePosition.x;
                newBox.text       = String.Join(", ", names);
                m_DropArea.Add(newBox);
            }
        }
        public bool DragPerform(DragPerformEvent evt, IEnumerable <ISelectable> selection, IDropTarget dropTarget)
        {
            HandleDragAndDropEvent(evt, selection);

            GraphElement droppedElement = selection.First() as GraphElement;

            // Remove the current preview with no animation
            RemovePreview(false);

            if (m_CurrentInsertIndex != -1)
            {
                // Notify the model that an element should be inserted at the specified index
                if (graphView != null && graphView.elementInsertedToStackNode != null)
                {
                    graphView.elementInsertedToStackNode(this, m_CurrentInsertIndex, droppedElement);
                }
                else
                {
                    InsertElement(m_CurrentInsertIndex, droppedElement);
                }
            }

            dragEntered = false;

            return(true);
        }
        private void OnDragPerformEvent(DragPerformEvent evt)
        {
            var selection = DragAndDrop.GetGenericData("DragSelection") as List <ISelectable>;

            if (selection == null)
            {
                SetDragIndicatorVisible(false);
                return;
            }

            if (selection.OfType <VFXBlackboardCategory>().Any())
            {
                return;
            }

            if (m_InsertIndex != -1)
            {
                var parent = GetFirstAncestorOfType <VFXBlackboard>();
                if (parent != null)
                {
                    parent.OnMoveParameter(selection.OfType <VisualElement>().Select(t => t.GetFirstOfType <VFXBlackboardRow>()).Where(t => t != null), this, m_InsertIndex);
                }
                SetDragIndicatorVisible(false);
                evt.StopPropagation();
                m_InsertIndex = -1;
            }
        }
예제 #10
0
        void OnDragPerform(DragPerformEvent evt)
        {
            var gameObject = DragAndDrop.objectReferences.OfType <GameObject>().Single();

            var template = new DropGameObjectEcsTemplate(gameObject, this.WorldToLocal(evt.mousePosition));

            template.PromptToCreate(m_Store);
        }
예제 #11
0
        void OnDragPerform(DragPerformEvent e)
        {
            var stencil          = Store.GetState().CurrentGraphModel.Stencil;
            var dragNDropHandler = stencil.DragNDropHandler;

            dragNDropHandler?.HandleDragPerform(e, Store, DragNDropContext.Blackboard, this);
            e.StopPropagation();
        }
예제 #12
0
        private void OnDragPerformEvent(DragPerformEvent evt)
        {
            m_CanStartDrag = false;
            OnDrop(evt.mousePosition);

            ClearDragAndDropUI();
            DragAndDropUtility.dragAndDrop.AcceptDrag();
        }
예제 #13
0
 private void OnDragPerformEvent(DragPerformEvent evt)
 {
     if (onDragPerform != null)
     {
         onDragPerform(evt);
         evt.StopImmediatePropagation();
     }
 }
예제 #14
0
        void OnDragPerform(DragPerformEvent evt)
        {
            var targets = DragAndDrop.objectReferences.OfType <GameObject>().ToList();
            var target  = targets.FirstOrDefault(t => t.GetComponent <Animator>() != null);

            if (target != null && target != value)
            {
                OnPreviewTargetClicked(target);
            }
        }
예제 #15
0
        private void OnDragPerformEvent(DragPerformEvent e)
        {
            var selection = DragAndDrop.GetGenericData("DragSelection") as List <ISelectable>;

            if (selection == null)
            {
                return;
            }

            IEnumerable <BlackboardField> fields = selection.OfType <BlackboardField>();

            if (!fields.Any())
            {
                return;
            }

            Vector2 localPos = (e.currentTarget as VisualElement).ChangeCoordinatesTo(m_GraphView.contentViewContainer, e.localMousePosition);

            foreach (BlackboardField field in fields)
            {
                MathBookField bookField = field.userData as MathBookField;

                if (bookField == null)
                {
                    continue;
                }

                MathNode fieldNode = null;

                if (bookField.direction == MathBookField.Direction.Input)
                {
                    var varFieldNode = ScriptableObject.CreateInstance <MathBookInputNode>();

                    varFieldNode.fieldName = bookField.name;
                    fieldNode = varFieldNode;
                }
                else
                {
                    var resFieldNode = ScriptableObject.CreateInstance <MathBookOutputNode>();

                    resFieldNode.fieldName = bookField.name;
                    fieldNode = resFieldNode;
                }

                fieldNode.m_Position = localPos;
                m_GraphView.window.AddNode(fieldNode);

                var visualNode = m_GraphView.window.CreateNode(fieldNode) as Node;

                m_GraphView.AddElement(visualNode);

                localPos += new Vector2(0, 25);
            }
        }
예제 #16
0
        // In order for tests to run without an EditorWindow but still be able to send
        // events, we sometimes need to force the event type. IMGUI::GetEventType() (native) will
        // return the event type as Ignore if the proper views haven't yet been
        // initialized. This (falsely) breaks tests that rely on the event type. So for tests, we
        // just ensure the event type is what we originally set it to when we sent it.
        internal static EventBase CreateEvent(Event systemEvent, EventType eventType)
        {
            switch (eventType)
            {
            case EventType.MouseMove:
                return(MouseMoveEvent.GetPooled(systemEvent));

            case EventType.MouseDrag:
                return(MouseMoveEvent.GetPooled(systemEvent));

            case EventType.MouseDown:
                return(MouseDownEvent.GetPooled(systemEvent));

            case EventType.MouseUp:
                return(MouseUpEvent.GetPooled(systemEvent));

            case EventType.ContextClick:
                return(ContextClickEvent.GetPooled(systemEvent));

            case EventType.MouseEnterWindow:
                return(MouseEnterWindowEvent.GetPooled(systemEvent));

            case EventType.MouseLeaveWindow:
                return(MouseLeaveWindowEvent.GetPooled(systemEvent));

            case EventType.ScrollWheel:
                return(WheelEvent.GetPooled(systemEvent));

            case EventType.KeyDown:
                return(KeyDownEvent.GetPooled(systemEvent));

            case EventType.KeyUp:
                return(KeyUpEvent.GetPooled(systemEvent));

            case EventType.DragUpdated:
                return(DragUpdatedEvent.GetPooled(systemEvent));

            case EventType.DragPerform:
                return(DragPerformEvent.GetPooled(systemEvent));

            case EventType.DragExited:
                return(DragExitedEvent.GetPooled(systemEvent));

            case EventType.ValidateCommand:
                return(ValidateCommandEvent.GetPooled(systemEvent));

            case EventType.ExecuteCommand:
                return(ExecuteCommandEvent.GetPooled(systemEvent));

            default:    // Layout, Ignore, Used
                return(IMGUIEvent.GetPooled(systemEvent));
            }
        }
        public void HandleDragPerform(DragPerformEvent e, Store store, DragNDropContext ctx, VisualElement element)
        {
            var state = store.GetState();

            if (state?.CurrentGraphModel == null)
            {
                return;
            }
            DotsStencil stencil = (DotsStencil)state.CurrentGraphModel.Stencil;

            if (stencil.Type == DotsStencil.GraphType.Subgraph)
            {
                Debug.LogError("Cannot create object references in a subgraph. Create a Data Input of type Game Object instead and feed it from an object graph in the scene.");
                return;
            }

            if (!(state?.EditorDataModel?.BoundObject as UnityEngine.Object))
            {
                Debug.LogError("Cannot create object references when a graph is opened in asset mode. Select a game object referencing this graph to do that.");
                return;
            }

            Vector2 graphSpacePosition = element.WorldToLocal(e.mousePosition);

            if (DragAndDrop.objectReferences.OfType <VSGraphAssetModel>().Any())
            {
                if (!DragAndDrop.objectReferences.All(x => x is VSGraphAssetModel assetModel && assetModel.GraphModel?.Stencil is DotsStencil dotsStencil && dotsStencil.Type == DotsStencil.GraphType.Subgraph))
                {
                    Debug.LogError("Object graph references must be created from their Game Object in the scene hierarchy. Only subgraphs can be referenced using their asset");
                    return;
                }
                store.Dispatch(new CreateObjectReferenceAction(graphSpacePosition, state?.CurrentGraphModel, DragAndDrop.objectReferences, CreateObjectReferenceAction.ReferenceType.Subgraph));
                return;
            }

            if (!DragAndDrop.objectReferences.Any(x => x is GameObject go && go.GetComponent <ScriptingGraphAuthoring>()))
            {
                store.Dispatch(new CreateObjectReferenceAction(graphSpacePosition, state?.CurrentGraphModel, DragAndDrop.objectReferences, CreateObjectReferenceAction.ReferenceType.Object));
                return;
            }

            var menu = new GenericMenu();

            menu.AddItem(new GUIContent("Object Reference"), false, () =>
            {
                store.Dispatch(new CreateObjectReferenceAction(graphSpacePosition, state?.CurrentGraphModel, DragAndDrop.objectReferences, CreateObjectReferenceAction.ReferenceType.Object));
            });
            menu.AddItem(new GUIContent("Smart Object"), false, () =>
            {
                store.Dispatch(new CreateObjectReferenceAction(graphSpacePosition, state?.CurrentGraphModel, DragAndDrop.objectReferences, CreateObjectReferenceAction.ReferenceType.ObjectGraph));
            });
            menu.DropDown(new Rect(e.originalMousePosition, Vector2.zero));
        }
        protected void OnDragPerformEvent(DragPerformEvent evt)
        {
            var selection = DragAndDrop.GetGenericData("DragSelection") as List <IGraphElementModel>;

            if (selection != null && CanAcceptDrop(selection) && m_InsertIndex != -1)
            {
                OnItemDropped(m_InsertIndex, selection);
            }

            HideDragIndicator();
            evt.StopPropagation();
        }
예제 #19
0
        private static void OnDragPerform(DragPerformEvent evt)
        {
            if (evt.target is IDragReceiver receiver)
            {
                var objects = DragAndDrop.objectReferences;
                var data    = DragAndDrop.GetGenericData(_dragData);

                if (receiver.IsDragValid(objects, data))
                {
                    DragAndDrop.AcceptDrag();
                    receiver.AcceptDrag(objects, data);
                }
            }
        }
예제 #20
0
        void OnDragPerform(DragPerformEvent evt)
        {
            RemoveDragIndicator();
            if (DragAndDrop.GetGenericData("DragSelection") != null)
            {
                Vector2 mousePosition = m_BlockContainer.WorldToLocal(evt.mousePosition);

                IEnumerable <VFXBlockUI> blocksUI = (DragAndDrop.GetGenericData("DragSelection") as List <ISelectable>).Select(t => t as VFXBlockUI).Where(t => t != null);
                if (!CanDrop(blocksUI))
                {
                    return;
                }

                int blockIndex = GetDragBlockIndex(mousePosition);

                BlocksDropped(blockIndex, blocksUI, evt.ctrlKey);

                DragAndDrop.AcceptDrag();

                m_DragStarted = false;
                RemoveFromClassList("dropping");
            }
            else
            {
                var references = DragAndDrop.objectReferences.OfType <VisualEffectSubgraphBlock>();

                if (references.Count() > 0 && (!controller.viewController.model.isSubgraph || !references.Any(t => t.GetResource().GetOrCreateGraph().subgraphDependencies.Contains(controller.viewController.model.subgraph) || t.GetResource() == controller.viewController.model)))
                {
                    var context = references.First().GetResource().GetOrCreateGraph().children.OfType <VFXBlockSubgraphContext>().FirstOrDefault();
                    if (context != null && (context.compatibleContextType & controller.model.contextType) == controller.model.contextType)
                    {
                        DragAndDrop.AcceptDrag();
                        Vector2 mousePosition = m_BlockContainer.WorldToLocal(evt.mousePosition);

                        int      blockIndex = GetDragBlockIndex(mousePosition);
                        VFXBlock newModel   = ScriptableObject.CreateInstance <VFXSubgraphBlock>();

                        newModel.SetSettingValue("m_Subgraph", references.First());

                        controller.AddBlock(blockIndex, newModel);
                    }

                    evt.StopPropagation();
                }
            }

            m_DragStarted = false;
            RemoveFromClassList("dropping");
        }
예제 #21
0
        public void HandleDragPerform(DragPerformEvent e, Store store, DragNDropContext ctx, VisualElement element)
        {
            var gameObject = DragAndDrop.objectReferences.OfType <GameObject>().Single();

            switch (ctx)
            {
            case DragNDropContext.Blackboard:
                store.Dispatch(new CreateComponentQueryFromGameObjectAction(gameObject));
                break;

            case DragNDropContext.Graph:
                store.Dispatch(new CreateQueryAndElementFromGameObjectAction(gameObject, element.WorldToLocal(e.mousePosition)));
                break;
            }
        }
예제 #22
0
        protected virtual void OnDragPerformEvent(DragPerformEvent evt)
        {
            var tree = m_DropTree;

            RemoveDragIndicator();
            if (tree == null)
            {
                return;
            }
            object dragData = DragAndDrop.GetGenericData("uNode");

            if (dragData == null && DragAndDrop.objectReferences.Length > 0)
            {
                dragData = DragAndDrop.objectReferences[0];
            }
            AcceptDrop(tree, dragData);
            DragAndDrop.SetGenericData("uNode", null);
        }
예제 #23
0
        protected override void OnDragPerformEvent(DragPerformEvent evt)
        {
            if (!(DragAndDrop.GetGenericData("DragSelection") is GraphElement selectedElement) || !AcceptDrop(selectedElement))
            {
                m_ParentElement.SetDragIndicatorVisible(false);
                evt.StopImmediatePropagation();
                return;
            }

            if (selectedElement is CriteriaModelRow criteriaModelRow)
            {
                criteriaModelRow.DuplicateRow(criteriaModelRow, this, insertAtEnd: true);
                evt.StopImmediatePropagation();
                return;
            }

            base.OnDragPerformEvent(evt);
        }
예제 #24
0
        public bool DragPerform(DragPerformEvent evt, IEnumerable <ISelectable> selection, IDropTarget dropTarget, ISelection dragSource)
        {
            Group group = parent.GetFirstAncestorOfType <Group>();

            List <GraphElement> elemsToAdd =
                selection
                .Cast <GraphElement>()
                .Where(e => e != group && !group.containedElements.Contains(e) && !(e.GetContainingScope() is Group) && e.IsGroupable())
                .ToList();     // ToList required here as the enumeration might be done again *after* the elements are added to the group

            if (elemsToAdd.Any())
            {
                group.AddElements(elemsToAdd);
            }

            RemoveFromClassList("dragEntered");
            return(true);
        }
        private void OnDragPerform(DragPerformEvent evt)
        {
            droppedObject = DragAndDrop.objectReferences[0];
            var draggedName = "";

            if (assetPath != string.Empty)
            {
                var splitPath = assetPath.Split('/');
                draggedName = splitPath[splitPath.Length - 1];
            }
            else
            {
                draggedName = droppedObject.name;
            }
            dropLabel.text = $"Containing '{draggedName}'...\n\n" +
                             $"(You can also drag from here)";
            dropArea.RemoveFromClassList("drop-area--dropping");
        }
        void OnDragPerform(DragPerformEvent evt)
        {
            if (EditorApplication.isPlaying)
            {
                return;
            }

            var clips       = DragAndDrop.objectReferences.OfType <AnimationClip>().ToList();
            var taggedClips = TaggedAnimationClip.BuildFromClips(clips, m_Window.Asset, ETagImportOption.AddDefaultTag);

            if (taggedClips.Any())
            {
                if (m_Window.Asset != null)
                {
                    m_Window.Asset.AddClips(taggedClips);
                    Refresh();
                }
            }
        }
예제 #27
0
        private void OnDragPerformed(DragPerformEvent evt)
        {
            Vector2 localPos = (evt.currentTarget as VisualElement).ChangeCoordinatesTo(this.contentViewContainer, evt.localMousePosition);

            var selection = DragAndDrop.GetGenericData("DragSelection") as List <ISelectable>;

            if (selection != null)
            {
                // Blackboard
                if (selection.OfType <BlackboardField>().Any())
                {
                    var fields = selection.OfType <BlackboardField>();
                    foreach (var field in fields)
                    {
                        CreateNode(field, localPos);
                    }
                }
            }
        }
        void OnDragPerformEvent(DragPerformEvent evt)
        {
            var updateList = false;

            var newIndex = GetInsertIndexFromMousePosition(evt.mousePosition);

            foreach (var obj in (List <ISelectable>)DragAndDrop.GetGenericData("DragSelection"))
            {
                if (!(obj is UniExposedParameterFieldView view))
                {
                    continue;
                }

                if (!updateList)
                {
                    graphView.RegisterCompleteObjectUndo("Moved parameters");
                }

                var parameters = graphAsset.uniExposedParameters;
                var oldIndex   = parameters.FindIndex(e => e == view.parameter);
                var parameter  = parameters[oldIndex];
                parameters.RemoveAt(oldIndex);

                // Patch new index after the remove operation:
                if (newIndex > oldIndex)
                {
                    newIndex--;
                }

                parameter.Apply(graphAsset);

                updateList = true;
            }

            if (!updateList)
            {
                return;
            }

            evt.StopImmediatePropagation();
            UpdateParameterList();
        }
예제 #29
0
            protected override void ExecuteDefaultActionAtTarget(EventBase evt)
            {
                base.ExecuteDefaultActionAtTarget(evt);

                if (evt == null)
                {
                    return;
                }

                if ((evt as MouseDownEvent)?.button == (int)MouseButton.LeftMouse)
                {
                    OnMouseDown(evt as MouseDownEvent);
                }
                else if (evt.eventTypeId == KeyDownEvent.TypeId())
                {
                    var kdEvt = evt as KeyDownEvent;

                    if (((evt as KeyDownEvent)?.keyCode == KeyCode.Space) ||
                        ((evt as KeyDownEvent)?.keyCode == KeyCode.KeypadEnter) ||
                        ((evt as KeyDownEvent)?.keyCode == KeyCode.Return))
                    {
                        OnKeyboardEnter();
                    }
                    else if (kdEvt.keyCode == KeyCode.Delete ||
                             kdEvt.keyCode == KeyCode.Backspace)
                    {
                        OnKeyboardDelete();
                    }
                }
                else if (evt.eventTypeId == DragUpdatedEvent.TypeId())
                {
                    OnDragUpdated(evt);
                }
                else if (evt.eventTypeId == DragPerformEvent.TypeId())
                {
                    OnDragPerform(evt);
                }
                else if (evt.eventTypeId == DragLeaveEvent.TypeId())
                {
                    OnDragLeave();
                }
            }
예제 #30
0
        void Drop(DragPerformEvent evt, Action <UnityEngine.Object, Vector2> OnDrop)
        {
            bool atLeastOneAccepted = false;

            foreach (UnityEngine.Object obj in DragAndDrop.objectReferences)
            {
                if (!IsInAcceptedTypes(obj.GetType()))
                {
                    continue;
                }

                OnDrop.Invoke(obj, evt.localMousePosition);
                atLeastOneAccepted = true;
            }
            if (atLeastOneAccepted)
            {
                DragAndDrop.AcceptDrag();
                evt.StopPropagation();
            }
        }