Fix ui::button updating to new event sources

This commit is contained in:
Nikita Lisitsa 2024-08-09 13:33:28 +03:00
parent 9ce8082e4d
commit 84905b6f05
2 changed files with 18 additions and 6 deletions

View file

@ -19,6 +19,9 @@ namespace psemek::ui::impl
private:
react::source<bool> mouseover_;
react::source<bool> mousedown_;
bool is_mouseover_ = false;
bool is_mousedown_ = false;
};
}

View file

@ -11,8 +11,11 @@ namespace psemek::ui::impl
{
bool const mouseover = geom::contains(shape(), geom::cast<float>(event.position));
if (*mouseover_ != mouseover)
mouseover_.set(mouseover);
if (is_mouseover_ != mouseover)
{
is_mouseover_ = mouseover;
mouseover_.set(is_mouseover_);
}
return false;
}
@ -21,12 +24,15 @@ namespace psemek::ui::impl
{
bool const mousedown = event.button == app::mouse_button::left && event.down;
if (*mouseover_ || !mousedown)
if (is_mouseover_ || !mousedown)
{
if (*mousedown_ != mousedown)
mousedown_.set(mousedown);
if (is_mousedown_ != mousedown)
{
is_mousedown_ = mousedown;
mousedown_.set(is_mousedown_);
}
return *mouseover_ && mousedown;
return is_mouseover_ && is_mousedown_;
}
return false;
@ -36,6 +42,9 @@ namespace psemek::ui::impl
{
mouseover_ = value.mouseover;
mousedown_ = value.mousedown;
mouseover_.set(is_mouseover_);
mousedown_.set(is_mousedown_);
}
}