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);
 }
Exemple #4
0
 protected virtual void OnMouseDragEnd(IMouseEventArgs e) =>
 MouseDragEnd?.Invoke(this, e);