diff --git a/dgl/EventHandlers.hpp b/dgl/EventHandlers.hpp index 084a26f4..e1844943 100644 --- a/dgl/EventHandlers.hpp +++ b/dgl/EventHandlers.hpp @@ -59,6 +59,7 @@ public: protected: State getState() const noexcept; + void clearState() noexcept; virtual void stateChanged(State state, State oldState); diff --git a/dgl/src/EventHandlers.cpp b/dgl/src/EventHandlers.cpp index d306408a..a9bee81c 100644 --- a/dgl/src/EventHandlers.cpp +++ b/dgl/src/EventHandlers.cpp @@ -60,13 +60,13 @@ struct ButtonEventHandler::PrivateData { // cursor was moved outside the button bounds, ignore click if (! widget->contains(ev.pos)) { - self->stateChanged(static_cast(state2), static_cast(state)); + self->stateChanged(static_cast(state), static_cast(state2)); widget->repaint(); return true; } // still on bounds, register click - self->stateChanged(static_cast(state2), static_cast(state)); + self->stateChanged(static_cast(state), static_cast(state2)); widget->repaint(); if (checkable) @@ -84,7 +84,7 @@ struct ButtonEventHandler::PrivateData { const int state2 = state; button = static_cast(ev.button); state |= kButtonStateActive; - self->stateChanged(static_cast(state2), static_cast(state)); + self->stateChanged(static_cast(state), static_cast(state2)); widget->repaint(); return true; } @@ -111,7 +111,7 @@ struct ButtonEventHandler::PrivateData { const int state2 = state; state |= kButtonStateHover; ret = widget->contains(oldMotionPos); - self->stateChanged(static_cast(state2), static_cast(state)); + self->stateChanged(static_cast(state), static_cast(state2)); widget->repaint(); } } @@ -123,7 +123,7 @@ struct ButtonEventHandler::PrivateData { const int state2 = state; state &= ~kButtonStateHover; ret = widget->contains(oldMotionPos); - self->stateChanged(static_cast(state2), static_cast(state)); + self->stateChanged(static_cast(state), static_cast(state2)); widget->repaint(); } } @@ -223,6 +223,11 @@ ButtonEventHandler::State ButtonEventHandler::getState() const noexcept return static_cast(pData->state); } +void ButtonEventHandler::clearState() noexcept +{ + pData->state = kButtonStateDefault; +} + void ButtonEventHandler::stateChanged(State, State) { }