Browse Source

ButtonEventHandler: Fix inverse logic and add a clear state call

Signed-off-by: falkTX <falktx@falktx.com>
pull/292/head
falkTX 4 years ago
parent
commit
3d1ea25465
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
2 changed files with 11 additions and 5 deletions
  1. +1
    -0
      dgl/EventHandlers.hpp
  2. +10
    -5
      dgl/src/EventHandlers.cpp

+ 1
- 0
dgl/EventHandlers.hpp View File

@@ -59,6 +59,7 @@ public:


protected: protected:
State getState() const noexcept; State getState() const noexcept;
void clearState() noexcept;


virtual void stateChanged(State state, State oldState); virtual void stateChanged(State state, State oldState);




+ 10
- 5
dgl/src/EventHandlers.cpp View File

@@ -60,13 +60,13 @@ struct ButtonEventHandler::PrivateData {
// cursor was moved outside the button bounds, ignore click // cursor was moved outside the button bounds, ignore click
if (! widget->contains(ev.pos)) if (! widget->contains(ev.pos))
{ {
self->stateChanged(static_cast<State>(state2), static_cast<State>(state));
self->stateChanged(static_cast<State>(state), static_cast<State>(state2));
widget->repaint(); widget->repaint();
return true; return true;
} }


// still on bounds, register click // still on bounds, register click
self->stateChanged(static_cast<State>(state2), static_cast<State>(state));
self->stateChanged(static_cast<State>(state), static_cast<State>(state2));
widget->repaint(); widget->repaint();


if (checkable) if (checkable)
@@ -84,7 +84,7 @@ struct ButtonEventHandler::PrivateData {
const int state2 = state; const int state2 = state;
button = static_cast<int>(ev.button); button = static_cast<int>(ev.button);
state |= kButtonStateActive; state |= kButtonStateActive;
self->stateChanged(static_cast<State>(state2), static_cast<State>(state));
self->stateChanged(static_cast<State>(state), static_cast<State>(state2));
widget->repaint(); widget->repaint();
return true; return true;
} }
@@ -111,7 +111,7 @@ struct ButtonEventHandler::PrivateData {
const int state2 = state; const int state2 = state;
state |= kButtonStateHover; state |= kButtonStateHover;
ret = widget->contains(oldMotionPos); ret = widget->contains(oldMotionPos);
self->stateChanged(static_cast<State>(state2), static_cast<State>(state));
self->stateChanged(static_cast<State>(state), static_cast<State>(state2));
widget->repaint(); widget->repaint();
} }
} }
@@ -123,7 +123,7 @@ struct ButtonEventHandler::PrivateData {
const int state2 = state; const int state2 = state;
state &= ~kButtonStateHover; state &= ~kButtonStateHover;
ret = widget->contains(oldMotionPos); ret = widget->contains(oldMotionPos);
self->stateChanged(static_cast<State>(state2), static_cast<State>(state));
self->stateChanged(static_cast<State>(state), static_cast<State>(state2));
widget->repaint(); widget->repaint();
} }
} }
@@ -223,6 +223,11 @@ ButtonEventHandler::State ButtonEventHandler::getState() const noexcept
return static_cast<State>(pData->state); return static_cast<State>(pData->state);
} }


void ButtonEventHandler::clearState() noexcept
{
pData->state = kButtonStateDefault;
}

void ButtonEventHandler::stateChanged(State, State) void ButtonEventHandler::stateChanged(State, State)
{ {
} }


Loading…
Cancel
Save