From a424e91a54f4c716e9206cd17f54f2e1963b7636 Mon Sep 17 00:00:00 2001 From: Zachariah Brown Date: Fri, 1 May 2015 15:20:45 -0400 Subject: [PATCH] Added support for the MouseWheelScrolled event --- include/SFML/Window/Event.h | 21 ++++++++++++++++++--- include/SFML/Window/Mouse.h | 10 ++++++++++ src/SFML/ConvertEvent.h | 9 ++++++++- 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/include/SFML/Window/Event.h b/include/SFML/Window/Event.h index dcb0cd2..12354aa 100644 --- a/include/SFML/Window/Event.h +++ b/include/SFML/Window/Event.h @@ -48,7 +48,8 @@ typedef enum sfEvtTextEntered, ///< A character was entered (data in event.text) sfEvtKeyPressed, ///< A key was pressed (data in event.key) sfEvtKeyReleased, ///< A key was released (data in event.key) - sfEvtMouseWheelMoved, ///< The mouse wheel was scrolled (data in event.mouseWheel) + sfEvtMouseWheelMoved, ///< The mouse wheel was scrolled (data in event.mouseWheel) (deprecated) + sfEvtMouseWheelScrolled, ///< The mouse wheel was scrolled (data in event.mouseWheelScroll) sfEvtMouseButtonPressed, ///< A mouse button was pressed (data in event.mouseButton) sfEvtMouseButtonReleased, ///< A mouse button was released (data in event.mouseButton) sfEvtMouseMoved, ///< The mouse cursor moved (data in event.mouseMove) @@ -116,7 +117,7 @@ typedef struct } sfMouseButtonEvent; //////////////////////////////////////////////////////////// -/// \brief Mouse wheel events parameters +/// \brief Mouse wheel events parameters (deprecated) /// //////////////////////////////////////////////////////////// typedef struct @@ -127,6 +128,19 @@ typedef struct int y; } sfMouseWheelEvent; +//////////////////////////////////////////////////////////// +/// \brief Mouse wheel events parameters +/// +//////////////////////////////////////////////////////////// +typedef struct +{ + sfEventType type; + sfMouseWheel wheel; + float delta; + int x; + int y; +} sfMouseWheelScrollEvent; + //////////////////////////////////////////////////////////// /// \brief Joystick axis move event parameters /// @@ -208,7 +222,8 @@ typedef union sfTextEvent text; ///< Text event parameters sfMouseMoveEvent mouseMove; ///< Mouse move event parameters sfMouseButtonEvent mouseButton; ///< Mouse button event parameters - sfMouseWheelEvent mouseWheel; ///< Mouse wheel event parameters + sfMouseWheelEvent mouseWheel; ///< Mouse wheel event parameters (deprecated) + sfMouseWheelScrollEvent mouseWheelScroll; ///< Mouse wheel event parameters sfJoystickMoveEvent joystickMove; ///< Joystick move event parameters sfJoystickButtonEvent joystickButton; ///< Joystick button event parameters sfJoystickConnectEvent joystickConnect; ///< Joystick (dis)connect event parameters diff --git a/include/SFML/Window/Mouse.h b/include/SFML/Window/Mouse.h index 7b7186e..2dfb7ce 100644 --- a/include/SFML/Window/Mouse.h +++ b/include/SFML/Window/Mouse.h @@ -48,6 +48,16 @@ typedef enum sfMouseButtonCount ///< Keep last -- the total number of mouse buttons } sfMouseButton; +//////////////////////////////////////////////////////////// +/// \brief Mouse wheels +/// +//////////////////////////////////////////////////////////// +typedef enum +{ + sfMouseVerticalWheel, ///< The vertical mouse wheel + sfMouseHorizontalWheel ///< The horizontal mouse wheel +} sfMouseWheel; + //////////////////////////////////////////////////////////// /// \brief Check if a mouse button is pressed diff --git a/src/SFML/ConvertEvent.h b/src/SFML/ConvertEvent.h index e9d8b0f..6971d62 100644 --- a/src/SFML/ConvertEvent.h +++ b/src/SFML/ConvertEvent.h @@ -33,7 +33,7 @@ //////////////////////////////////////////////////////////// -// Define a function to convert a sf::Event ot a sfEvent +// Define a function to convert a sf::Event to a sfEvent //////////////////////////////////////////////////////////// inline void convertEvent(const sf::Event& SFMLEvent, sfEvent* event) { @@ -67,6 +67,13 @@ inline void convertEvent(const sf::Event& SFMLEvent, sfEvent* event) event->mouseWheel.y = SFMLEvent.mouseWheel.y; break; + case sfEvtMouseWheelScrolled : + event->mouseWheelScroll.wheel = static_cast(SFMLEvent.mouseWheelScroll.wheel); + event->mouseWheelScroll.delta = SFMLEvent.mouseWheelScroll.delta; + event->mouseWheelScroll.x = SFMLEvent.mouseWheelScroll.x; + event->mouseWheelScroll.y = SFMLEvent.mouseWheelScroll.y; + break; + case sfEvtMouseButtonPressed : case sfEvtMouseButtonReleased : event->mouseButton.button = static_cast(SFMLEvent.mouseButton.button);