/// <summary> /// Assigns an event handler to capture mouse events. /// </summary> /// <param name="handler">The event handler that captures mouse events.</param> /// <remarks> /// If an event handler is already set to capture mouse events, the event handler is replaced with the handler specified by this method. /// </remarks> public static void CaptureMouse(this IEventHandler handler) { VisualElement ve = handler as VisualElement; if (ve != null) { ve.CapturePointer(PointerId.mousePointerId); ve.panel.ProcessPointerCapture(PointerId.mousePointerId); } }
public static void CaptureMouse(this IEventHandler handler) { VisualElement visualElement = handler as VisualElement; bool flag = visualElement != null; if (flag) { visualElement.CapturePointer(PointerId.mousePointerId); visualElement.panel.ProcessPointerCapture(PointerId.mousePointerId); } }
private void OnPointerMoveEvent(PointerMoveEvent evt) { if (useDragEvents) { if (m_DragState != DragState.CanStartDrag) { return; } } else { if (m_DragState == DragState.Dragging) { UpdateDrag(evt.position); return; } if (m_DragState != DragState.CanStartDrag) { return; } } if (Mathf.Abs(m_Start.x - evt.position.x) > k_DistanceToActivation || Mathf.Abs(m_Start.y - evt.position.y) > k_DistanceToActivation) { var startDragArgs = StartDrag(m_Start); if (useDragEvents) { // Drag can only be started by mouse events or else it will throw an error, so we leave early. if (Event.current.type != EventType.MouseDown && Event.current.type != EventType.MouseDrag) { return; } DragAndDropUtility.dragAndDrop.StartDrag(startDragArgs); } else // Force default drag and drop client for runtime panels. { m_Target.CapturePointer(evt.pointerId); evt.StopPropagation(); dragAndDropClient = new DefaultDragAndDropClient(); dragAndDropClient.StartDrag(startDragArgs); } m_DragState = DragState.Dragging; } }
private void UpdateValueOnPointerDown(PointerDownEvent evt) { if (CanStartDrag(evt.button, evt.localPosition)) { // We want to allow dragging when using a mouse in any context and when in an Editor context with any pointer type. if (evt.pointerType == PointerType.mouse) { m_DragElement.CaptureMouse(); ProcessDownEvent(evt); } else if (m_DragElement.panel.contextType == ContextType.Editor) { evt.PreventDefault(); m_DragElement.CapturePointer(evt.pointerId); ProcessDownEvent(evt); } } }