コード例 #1
0
    private void HandleDragAction(ListViewCtrl list)
    {
        if (
            (null == list) ||
            !list.IsCurrentCtrlEnable()
            )
        {
            return;
        }

        if (
            (list.LastRect.Contains(FrameInputInfo.GetInstance().currPos) &&
             FrameInputInfo.GetInstance().dragingObjs&& !m_IsCusDragStart)
            )
        {
            bool accept = false;

            if (list.onAcceptDragObjs != null)
            {
                accept = list.onAcceptDragObjs(
                    list,
                    FrameInputInfo.GetInstance().dragObjs,
                    FrameInputInfo.GetInstance().dragObjsPaths);

                if (accept)
                {
                    DragAndDrop.visualMode = DragAndDropVisualMode.Link;

                    if (!FrameInputInfo.GetInstance().dragObjsPerform)
                    {
                        list.frameTriggerInfo.isDraggingObjs = true;
                    }
                    else
                    {
                        list.frameTriggerInfo.isDropObjs = true;
                    }
                }
                else
                {
                    DragAndDrop.visualMode = DragAndDropVisualMode.Rejected;
                }
            }
            else
            {
                DragAndDrop.visualMode = DragAndDropVisualMode.Rejected;
            }
        }
        //DragUpdated
        else if (
            (list.LastRect.Contains(FrameInputInfo.GetInstance().currPos)) &&
            (FrameInputInfo.GetInstance().customDragUpdated)
            )
        {
            CustomDragUpdated(list);

            list.RequestRepaint();
        }
        //DragAccept ctrl
        else if (
            FrameInputInfo.GetInstance().dragObjsPerform&& Event.current.control &&
            list.LastRect.Contains(FrameInputInfo.GetInstance().currPos)
            )
        {
            CustomDragAccept(list, true);

            list.RequestRepaint();
        }
        else if (
            FrameInputInfo.GetInstance().dragObjsPerform&&
            list.LastRect.Contains(FrameInputInfo.GetInstance().currPos)
            )
        {
            CustomDragAccept(list, false);

            list.RequestRepaint();
        }
    }
コード例 #2
0
    private void HandleMouseAction(ListViewCtrl list, int curIndex)
    {
        if (
            (null == list) ||
            (!list.IsCurrentCtrlEnable())
            )
        {
            return;
        }

        if (!list.LastRect.Contains(CalcLocalPos(list, FrameInputInfo.GetInstance().currPos)))
        {
            return;
        }

        bool    bIsFind       = false;
        Vector2 localMousePos = list.CalcLocalPos(FrameInputInfo.GetInstance().currPos);

        localMousePos += list.ScrollPos;

        //Ctrl + LButtonPress
        if (
            FrameInputInfo.GetInstance().leftBtnPress&& Event.current.control &&
            list.Items[curIndex].lastRect.Contains(localMousePos)
            )
        {
            foreach (var index in list.SelectItems)
            {
                if (curIndex == index)
                {
                    bIsFind = true;
                    break;
                }
            }

            if (!bIsFind)
            {
                list.SelectItems.Add(curIndex);
                list.LastSelectItem = curIndex;
                list.frameTriggerInfo.isCtrlSelectItem   = true;
                list.frameTriggerInfo.lastCtrlSelectItem = list.LastSelectItem;
            }
            else
            {
                m_TargetCtrl   = list;
                m_IsNeedRemove = true;
            }

            CustomDragPrepare(list);

            list.RequestRepaint();
        }
        //Ctrl + LButtonPressUp
        else if (
            FrameInputInfo.GetInstance().leftBtnPressUp&& Event.current.control &&
            list.Items[curIndex].lastRect.Contains(localMousePos)
            )
        {
            foreach (var index in list.SelectItems)
            {
                if (curIndex == index)
                {
                    bIsFind = true;
                    break;
                }
            }

            if (m_IsNeedRemove && (list.Name == m_TargetCtrl.Name))
            {
                list.SelectItems.Remove(curIndex);
                UpdateLastSelectItemAfterRemove(list, curIndex);
                list.frameTriggerInfo.isCtrlSelectItem   = true;
                list.frameTriggerInfo.lastCtrlSelectItem = list.LastSelectItem;
                m_IsNeedRemove = false;
                m_TargetCtrl   = null;
            }

            list.RequestRepaint();
        }
        //LButtonPress
        else if (
            FrameInputInfo.GetInstance().leftBtnPress&&
            list.Items[curIndex].lastRect.Contains(localMousePos)
            )
        {
            foreach (var index in list.SelectItems)
            {
                if (curIndex == index)
                {
                    bIsFind = true;
                    break;
                }
            }

            if (!bIsFind)
            {
                list.SelectItems.Clear();
                list.SelectItems.Add(curIndex);
                list.LastSelectItem = curIndex;
                list.frameTriggerInfo.lastSelectItem = curIndex;
            }
            else
            {
                m_TargetCtrl   = list;
                m_IsNeedRemove = true;
            }

            CustomDragPrepare(list);

            list.RequestRepaint();
        }
        //LButtonPressUp
        else if (
            FrameInputInfo.GetInstance().leftBtnPressUp&&
            list.Items[curIndex].lastRect.Contains(localMousePos)
            )
        {
            if (m_IsNeedRemove && (list.Name == m_TargetCtrl.Name))
            {
                list.SelectItems.Clear();
                list.SelectItems.Add(curIndex);
                list.LastSelectItem = curIndex;
                list.frameTriggerInfo.lastSelectItem = curIndex;

                m_IsNeedRemove = false;
                m_TargetCtrl   = null;
            }

            list.RequestRepaint();
        }
        //LButtonDoubleClick
        else if (
            FrameInputInfo.GetInstance().leftBtnDoubleClick&&
            list.Items[curIndex].lastRect.Contains(localMousePos)
            )
        {
            list.SelectItems.Clear();
            list.SelectItems.Add(curIndex);
            list.LastSelectItem = curIndex;
            list.frameTriggerInfo.lastSelectItem = curIndex;
            list.frameTriggerInfo.isDoubleClick  = true;
            list.ClickObject = curIndex;

            list.RequestRepaint();
        }
        //LButtonOnPress
        else if (
            FrameInputInfo.GetInstance().leftBtnOnPress&&
            list.Items[curIndex].lastRect.Contains(localMousePos)
            )
        {
            list.frameTriggerInfo.isOnPress = true;
            list.ClickObject = curIndex;

            list.RequestRepaint();
        }
        //RButtonDown
        else if (
            FrameInputInfo.GetInstance().rightBtnPress&&
            list.Items[curIndex].lastRect.Contains(localMousePos)
            )
        {
            foreach (var index in list.SelectItems)
            {
                if (curIndex == index)
                {
                    bIsFind = true;

                    break;
                }
            }

            if (!bIsFind)
            {
                list.SelectItems.Clear();
                list.SelectItems.Add(curIndex);
            }
            list.LastSelectItem = curIndex;
            list.frameTriggerInfo.lastSelectItemR = curIndex;

            list.RequestRepaint();
        }
        //RButtonUP
        else if (
            FrameInputInfo.GetInstance().rightBtnPressUp&&
            list.Items[curIndex].lastRect.Contains(localMousePos)
            )
        {
            list.frameTriggerInfo.lastSelectItemRU = curIndex;

            list.RequestRepaint();
        }
        //Drag
        else if (
            FrameInputInfo.GetInstance().drag&&
            list.Items[curIndex].lastRect.Contains(localMousePos)
            )
        {
            CustomDragStart(list);

            list.RequestRepaint();
        }
        else
        {
            //do nothing
        }
    }