Browse Source

Merge branch 'master' into compatibility

Vladimír Vondruš 13 years ago
parent
commit
2c9a982a16
  1. 2
      external/Optional/optional.hpp
  2. 16
      src/Platform/NaClApplication.cpp
  3. 12
      src/Platform/NaClApplication.h

2
external/Optional/optional.hpp vendored

@ -190,6 +190,8 @@ template <class T> inline constexpr typename std::remove_reference<T>::type&& co
{
# if defined(EMSCRIPTEN) && EMSCRIPTEN
__assert_fail(expr, file, line, "");
# elif defined __native_client__
__assert(expr, line, file); // WHY.
# elif defined __clang__ || defined __GNU_LIBRARY__
__assert(expr, file, line);
# elif defined __GNUC__

16
src/Platform/NaClApplication.cpp

@ -34,6 +34,13 @@
namespace Magnum { namespace Platform {
static_assert(NaClApplication::MouseEvent::Button::WheelUp != NaClApplication::MouseEvent::Button::Left &&
NaClApplication::MouseEvent::Button::WheelUp != NaClApplication::MouseEvent::Button::Middle &&
NaClApplication::MouseEvent::Button::WheelUp != NaClApplication::MouseEvent::Button::Right &&
NaClApplication::MouseEvent::Button::WheelDown != NaClApplication::MouseEvent::Button::Left &&
NaClApplication::MouseEvent::Button::WheelDown != NaClApplication::MouseEvent::Button::Middle &&
NaClApplication::MouseEvent::Button::WheelDown != NaClApplication::MouseEvent::Button::Right, "");
struct NaClApplication::ConsoleDebugOutput {
explicit ConsoleDebugOutput(pp::Instance* instance);
@ -201,6 +208,15 @@ bool NaClApplication::HandleInputEvent(const pp::InputEvent& event) {
break;
}
case PP_INPUTEVENT_TYPE_WHEEL: {
pp::WheelInputEvent wheelEvent(event);
if(Math::TypeTraits<Float>::equals(wheelEvent.GetDelta().y(), 0.0f)) return false;
MouseEvent e(wheelEvent.GetDelta().y() > 0 ? MouseEvent::Button::WheelUp : MouseEvent::Button::WheelDown, {}, static_cast<InputEvent::Modifier>(wheelEvent.GetModifiers()));
mousePressEvent(e);
if(!e.isAccepted()) return false;
break;
}
case PP_INPUTEVENT_TYPE_MOUSEMOVE: {
pp::MouseInputEvent mouseEvent(event);
MouseMoveEvent e({mouseEvent.GetPosition().x(), mouseEvent.GetPosition().y()}, {mouseEvent.GetMovement().x(), mouseEvent.GetMovement().y()}, static_cast<InputEvent::Modifier>(mouseEvent.GetModifiers()));

12
src/Platform/NaClApplication.h

@ -624,13 +624,21 @@ class NaClApplication::MouseEvent: public NaClApplication::InputEvent {
enum class Button: unsigned int {
Left = PP_INPUTEVENT_MOUSEBUTTON_LEFT, /**< Left button */
Middle = PP_INPUTEVENT_MOUSEBUTTON_MIDDLE, /**< Middle button */
Right = PP_INPUTEVENT_MOUSEBUTTON_RIGHT /**< Right button */
Right = PP_INPUTEVENT_MOUSEBUTTON_RIGHT, /**< Right button */
WheelUp = 0xFFFF01, /**< Wheel up */
WheelDown = 0xFFFF02 /**< Wheel down */
};
/** @brief Button */
constexpr Button button() const { return _button; }
/** @brief Position */
/**
* @brief Position
*
* @attention Note that due to the way the @ref Button::WheelUp and
* @ref Button::WheelDown events are handled by Native Client, the
* position information is not available, i.e. it is set to zero.
*/
constexpr Vector2i position() const { return _position; }
private:

Loading…
Cancel
Save