From 3d1ea2546596f99fe0013e3b6db8478c35eaefff Mon Sep 17 00:00:00 2001 From: falkTX Date: Mon, 14 Jun 2021 20:59:54 +0100 Subject: [PATCH] ButtonEventHandler: Fix inverse logic and add a clear state call Signed-off-by: falkTX --- dgl/EventHandlers.hpp | 1 + dgl/src/EventHandlers.cpp | 15 ++++++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) 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) { }