From f15609bc3dbbfef28ae417ef2d435dbb621408dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sun, 20 Oct 2013 18:22:42 +0200 Subject: [PATCH] Platform: implement fake GlutApplication::MouseMoveEvent::buttons(). The event is called only if any button is pressed, added Button::Left which is always present. This is just for source compatibility with other Application implementations. --- src/Platform/GlutApplication.cpp | 2 +- src/Platform/GlutApplication.h | 28 +++++++++++++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/Platform/GlutApplication.cpp b/src/Platform/GlutApplication.cpp index aa8d8e388..5598612f7 100644 --- a/src/Platform/GlutApplication.cpp +++ b/src/Platform/GlutApplication.cpp @@ -104,7 +104,7 @@ void GlutApplication::staticMouseEvent(int button, int state, int x, int y) { } void GlutApplication::staticMouseMoveEvent(int x, int y) { - MouseMoveEvent e({x, y}); + MouseMoveEvent e({x, y}, MouseMoveEvent::Button::Left); instance->mouseMoveEvent(e); } diff --git a/src/Platform/GlutApplication.h b/src/Platform/GlutApplication.h index 090043c4e..228e05332 100644 --- a/src/Platform/GlutApplication.h +++ b/src/Platform/GlutApplication.h @@ -462,13 +462,37 @@ class GlutApplication::MouseMoveEvent: public GlutApplication::InputEvent { friend class GlutApplication; public: + /** + * @brief Mouse button + * + * @see Buttons, buttons() + */ + enum class Button: UnsignedByte { + /** + * Any button. Note that GLUT doesn't differentiate between mouse + * buttons when firing the event. + */ + Left = 1 + }; + + /** + * @brief Set of mouse buttons + * + * @see buttons() + */ + typedef Containers::EnumSet Buttons; + /** @brief Position */ constexpr Vector2i position() const { return _position; } + /** @brief Mouse buttons */ + constexpr Buttons buttons() { return _buttons; } + private: - constexpr MouseMoveEvent(const Vector2i& position): _position(position) {} + constexpr MouseMoveEvent(const Vector2i& position, Buttons buttons): _position(position), _buttons(buttons) {} const Vector2i _position; + const Buttons _buttons; }; /** @hideinitializer @@ -502,6 +526,8 @@ typedef GlutApplication Application; #endif #endif +CORRADE_ENUMSET_OPERATORS(GlutApplication::MouseMoveEvent::Buttons) + /* Implementations for inline functions with unused parameters */ inline void GlutApplication::keyPressEvent(KeyEvent&) {} inline void GlutApplication::mousePressEvent(MouseEvent&) {}