diff --git a/src/Platform/Sdl2Application.cpp b/src/Platform/Sdl2Application.cpp index 00d40aca8..9ae19073f 100644 --- a/src/Platform/Sdl2Application.cpp +++ b/src/Platform/Sdl2Application.cpp @@ -135,4 +135,16 @@ int Sdl2Application::exec() { return 0; } +Sdl2Application::InputEvent::Modifiers Sdl2Application::MouseEvent::modifiers() { + if(modifiersLoaded) return _modifiers; + modifiersLoaded = true; + return _modifiers = static_cast(SDL_GetModState()); +} + +Sdl2Application::InputEvent::Modifiers Sdl2Application::MouseMoveEvent::modifiers() { + if(modifiersLoaded) return _modifiers; + modifiersLoaded = true; + return _modifiers = static_cast(SDL_GetModState()); +} + }} diff --git a/src/Platform/Sdl2Application.h b/src/Platform/Sdl2Application.h index 3984f41da..10e0e7713 100644 --- a/src/Platform/Sdl2Application.h +++ b/src/Platform/Sdl2Application.h @@ -343,11 +343,20 @@ class Sdl2Application::MouseEvent: public Sdl2Application::InputEvent { /** @brief Position */ inline Math::Vector2 position() const { return _position; } + /** + * @brief Modifiers + * + * Lazily populated on first request. + */ + Modifiers modifiers(); + private: - inline MouseEvent(Button button, const Math::Vector2& position): _button(button), _position(position) {} + inline MouseEvent(Button button, const Math::Vector2& position): _button(button), _position(position), modifiersLoaded(false) {} const Button _button; const Math::Vector2 _position; + bool modifiersLoaded; + Modifiers _modifiers; }; /** @@ -362,10 +371,19 @@ class Sdl2Application::MouseMoveEvent: public Sdl2Application::InputEvent { /** @brief Position */ inline Math::Vector2 position() const { return _position; } + /** + * @brief Modifiers + * + * Lazily populated on first request. + */ + Modifiers modifiers(); + private: - inline MouseMoveEvent(const Math::Vector2& position): _position(position) {} + inline MouseMoveEvent(const Math::Vector2& position): _position(position), modifiersLoaded(false) {} const Math::Vector2 _position; + bool modifiersLoaded; + Modifiers _modifiers; }; /** @hideinitializer