public void HandleRightClick(Rect appViewPosition, Event currentEvent, GenericMenu contextMenu) { if (currentEvent.type == EventType.MouseDown && currentEvent.button == 1) { LastClickPosition = GraphWindowMediator.SnapDragPositionToGrid(currentEvent.mousePosition); currentEvent.Use(); contextMenu.ShowAsContext(); } }
/// <returns>Tuple - first parameter is whether we have dragged this "frame". /// Second parameter is whether we have completed dragging and should update position</returns> public Tuple <bool, bool> HandleDrag(Event currentEvent, out Vector2 newDragPosition) { var returnValue = new Tuple <bool, bool>(false, false); newDragPosition = GraphWindowMediator.SnapDragPositionToGrid(_initialDragPosition + _draggingOffset + _initialDragOffset); var currentMousePosition = currentEvent.mousePosition; if (_lastDrawRect.Contains(currentMousePosition) && currentEvent.type == EventType.MouseDown && currentEvent.button == 0) { _initialDragPosition = currentMousePosition; _initialDragOffset = _lastDrawRect.position - currentMousePosition; _draggingOffset = Vector2.zero; _isDragging = true; currentEvent.Use(); } if (_isDragging && currentEvent.button == 0) { switch (currentEvent.type) { case EventType.MouseDrag: _draggingOffset += currentEvent.delta; currentEvent.Use(); returnValue.First = true; return(returnValue); case EventType.MouseUp: _isDragging = false; currentEvent.Use(); const float relativeSnapDragThreshold = 0.3f; returnValue.Second = _draggingOffset.magnitude > GraphWindowMediator.SnapCell.magnitude * relativeSnapDragThreshold; GUIUtility.hotControl = 0; return(returnValue); } } return(returnValue); }