From 2ad7fea174c78d08038ea4bdf1b502e37573ee98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Fri, 16 Nov 2012 01:52:06 +0100 Subject: [PATCH] Sdl2Application: support for modifiers also in mouse events. Lazily loaded on user request. --- src/Platform/Sdl2Application.cpp | 12 ++++++++++++ src/Platform/Sdl2Application.h | 22 ++++++++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) 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