1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-24 22:14:36 +02:00

lastActivated with overload

This commit is contained in:
Laserlicht 2023-10-10 23:51:05 +02:00 committed by GitHub
parent 53ee843e7e
commit f9db3d131f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 16 additions and 4 deletions

View File

@ -289,13 +289,16 @@ void CInfoBar::tick(uint32_t msPassed)
}
}
void CInfoBar::clickReleased(const Point & cursorPosition)
void CInfoBar::clickReleased(const Point & cursorPosition, bool lastActivated)
{
timerCounter = 0;
removeUsedEvents(TIME); //expiration trigger from just clicked element is not valid anymore
if(state == HERO || state == TOWN)
showGameStatus();
{
if(lastActivated)
showGameStatus();
}
else if(state == GAME)
showDate();
else

View File

@ -159,7 +159,7 @@ private:
void tick(uint32_t msPassed) override;
void clickReleased(const Point & cursorPosition) override;
void clickReleased(const Point & cursorPosition, bool lastActivated) override;
void showPopupWindow(const Point & cursorPosition) override;
void hover(bool on) override;

View File

@ -203,6 +203,7 @@ void EventDispatcher::handleLeftButtonClick(const Point & position, int toleranc
// POSSIBLE SOLUTION: make EventReceivers inherit from create_shared_from this and store weak_ptr's in lists
AEventsReceiver * nearestElement = findElementInToleranceRange(lclickable, position, AEventsReceiver::LCLICK, tolerance);
auto hlp = lclickable;
bool lastActivated = true;
for(auto & i : hlp)
{
@ -212,13 +213,19 @@ void EventDispatcher::handleLeftButtonClick(const Point & position, int toleranc
if( i->receiveEvent(position, AEventsReceiver::LCLICK) || i == nearestElement)
{
if(isPressed)
{
i->clickPressed(position);
i->clickPressed(position, lastActivated);
}
if (i->mouseClickedState && !isPressed)
{
i->clickReleased(position);
i->clickReleased(position, lastActivated);
}
i->mouseClickedState = isPressed;
return;
lastActivated = false;
}
else
{

View File

@ -45,6 +45,8 @@ protected:
public:
virtual void clickPressed(const Point & cursorPosition) {}
virtual void clickReleased(const Point & cursorPosition) {}
virtual void clickPressed(const Point & cursorPosition, bool lastActivated) {}
virtual void clickReleased(const Point & cursorPosition, bool lastActivated) {}
virtual void clickCancel(const Point & cursorPosition) {}
virtual void showPopupWindow(const Point & cursorPosition) {}
virtual void clickDouble(const Point & cursorPosition) {}