Пример #1
0
        bool TryToPickInCanvas(Vector2 mousePosition)
        {
            var localMouse = m_Canvas.WorldToLocal(mousePosition);

            if (!m_Canvas.ContainsPoint(localMouse))
            {
                m_ParentTracker.Deactivate();
                return(false);
            }

            var pickedElement = Panel.PickAllWithoutValidatingLayout(m_Canvas, mousePosition);

            // Don't allow selection of elements inside template instances.
            pickedElement = pickedElement.GetClosestElementPartOfCurrentDocument();

            // Get Closest valid element.
            pickedElement = pickedElement.GetClosestElementThatIsValid(IsPickedElementValid);

            if (pickedElement == null)
            {
                m_ParentTracker.Deactivate();
                return(false);
            }

            m_LastHoverElement = pickedElement;

            m_ParentTracker.Activate(pickedElement);

            return(true);
        }
Пример #2
0
        bool TryToPickInCanvas(Vector2 mousePosition)
        {
            if (viewport == null)
            {
                return(false);
            }

            var localMouse = m_Canvas.WorldToLocal(mousePosition);

            if (!m_Canvas.ContainsPoint(localMouse))
            {
                m_ParentTracker?.Deactivate();
                m_PlacementIndicator?.Deactivate();
                return(false);
            }

            var pickedElement = Panel.PickAllWithoutValidatingLayout(m_Canvas, mousePosition);

            // Don't allow selection of elements inside template instances or outside current active document.
            pickedElement = pickedElement.GetClosestElementPartOfCurrentDocument();
            if (pickedElement != null && !pickedElement.IsPartOfActiveVisualTreeAsset(m_PaneWindow.document))
            {
                pickedElement = null;
            }

            // Get Closest valid element.
            pickedElement = pickedElement.GetClosestElementThatIsValid(IsPickedElementValid);

            if (pickedElement == null)
            {
                m_ParentTracker?.Deactivate();
                m_PlacementIndicator?.Deactivate();
                m_LastHoverElement = null;
                return(false);
            }

            // The placement indicator might decide to change the parent.
            if (SupportsPlacementIndicator() && m_PlacementIndicator != null)
            {
                m_PlacementIndicator.Activate(pickedElement, mousePosition);
                pickedElement = m_PlacementIndicator.parentElement;
            }

            m_ParentTracker.Activate(pickedElement);

            m_LastHoverElement = pickedElement;
            if (SupportsPlacementIndicator() && m_PlacementIndicator != null)
            {
                m_LastHoverElementChildIndex = m_PlacementIndicator.indexWithinParent;
            }

            return(true);
        }
Пример #3
0
        void EndDragInner()
        {
            EndDrag();

            m_LastRowHoverElement?.RemoveFromClassList(s_TreeItemHoverHoverClassName);
            m_LastRowHoverElement?.RemoveFromClassList(s_TreeItemHoverWithDragBetweenElementsSupportClassName);
            m_DraggedElement.RemoveFromClassList(s_DraggedPreviewClassName);
            m_ParentTracker?.Deactivate();
        }