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(); } }
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 } }