From 4a6d3a9d8898c0131db35f8f1d56da5b221b9247 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Thu, 10 Mar 2022 12:19:57 +0300 Subject: [PATCH] Add ui helper for sending fake mouse move events to force mouseover status --- libs/ui/include/psemek/ui/element.hpp | 2 ++ libs/ui/source/element.cpp | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/libs/ui/include/psemek/ui/element.hpp b/libs/ui/include/psemek/ui/element.hpp index 177d4d2a..cf39d466 100644 --- a/libs/ui/include/psemek/ui/element.hpp +++ b/libs/ui/include/psemek/ui/element.hpp @@ -119,4 +119,6 @@ namespace psemek::ui } } + void send_fake_mouse_move_event(element * e, bool mouseover); + } diff --git a/libs/ui/source/element.cpp b/libs/ui/source/element.cpp index b64be9ea..3676565c 100644 --- a/libs/ui/source/element.cpp +++ b/libs/ui/source/element.cpp @@ -169,4 +169,13 @@ namespace psemek::ui c->post_delayed_callbacks(); } + void send_fake_mouse_move_event(element * e, bool mouseover) + { + auto const box = e->shape().bbox(); + if (mouseover) + e->on_event(mouse_move{geom::cast(box.center())}); + else + e->on_event(mouse_move{geom::cast(box.corner(0.f, 0.f) - geom::vector{1000.f, 1000.f})}); + } + }