private void CheckButtonReleased(Func <MouseState, ButtonState> getButtonState, MouseButton button) { if ((getButtonState(_currentState) == ButtonState.Released) && (getButtonState(_previousState) == ButtonState.Pressed)) { var args = new MouseEventArgs(ViewportAdapter, _gameTime.TotalGameTime, _previousState, _currentState, button); if (_mouseDownArgs.Button == args.Button) { var clickMovement = DistanceBetween(args.Position, _mouseDownArgs.Position); // If the mouse hasn't moved much between mouse down and mouse up if (clickMovement < DragThreshold) { if (!_hasDoubleClicked) { MouseClicked?.Invoke(this, args); } } else // If the mouse has moved between mouse down and mouse up { MouseDragEnd?.Invoke(this, args); _dragging = false; } } MouseUp?.Invoke(this, args); _hasDoubleClicked = false; _previousClickArgs = args; } }
private void _mouseListener_MouseDragEnd(object sender, MouseEventArgs e) { _scene?.FireMouseDragEnd(e); MouseDragEnd?.Invoke(sender, e); #if DEBUG Logger.Log("Mouse drag end."); #endif }
internal void FireMouseDragEnd(MouseEventArgs e) { OnMouseDragEnd(e); MouseDragEnd?.Invoke(this, e); }
protected virtual void OnMouseDragEnd(IMouseEventArgs e) => MouseDragEnd?.Invoke(this, e);