From 84905b6f053479af08f2f66560f529ccb09f3b68 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Fri, 9 Aug 2024 13:33:28 +0300 Subject: [PATCH] Fix ui::button updating to new event sources --- .../ui/include/psemek/ui/impl/button_base.hpp | 3 +++ libs/ui/source/impl/button_base.cpp | 21 +++++++++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/libs/ui/include/psemek/ui/impl/button_base.hpp b/libs/ui/include/psemek/ui/impl/button_base.hpp index a5bfd6fb..cb52f0e1 100644 --- a/libs/ui/include/psemek/ui/impl/button_base.hpp +++ b/libs/ui/include/psemek/ui/impl/button_base.hpp @@ -19,6 +19,9 @@ namespace psemek::ui::impl private: react::source mouseover_; react::source mousedown_; + + bool is_mouseover_ = false; + bool is_mousedown_ = false; }; } diff --git a/libs/ui/source/impl/button_base.cpp b/libs/ui/source/impl/button_base.cpp index b6391bac..06a4e865 100644 --- a/libs/ui/source/impl/button_base.cpp +++ b/libs/ui/source/impl/button_base.cpp @@ -11,8 +11,11 @@ namespace psemek::ui::impl { bool const mouseover = geom::contains(shape(), geom::cast(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_); } }