add 'onmouseenter', 'onmouseleave' ui events

This commit is contained in:
MihailRis 2025-12-10 20:03:41 +03:00
parent d457b2ee7f
commit 78e0ac5a95
5 changed files with 36 additions and 1 deletions

View file

@ -144,6 +144,28 @@ void GUI::actMouse(float delta, const CursorState& cursor) {
}
}
this->hover = hover;
auto node = hover;
while (node) {
if (mouseOver.find(hover) != mouseOver.end()) {
break;
}
mouseOver.insert(node);
node->setMouseOver(true);
auto parent = node->getParent();
if (parent) {
node = parent->shared_from_this();
}
}
for (auto it = mouseOver.begin(); it != mouseOver.end(); ) {
auto node = *it;
if (node->isInside(cursor.pos)) {
++it;
continue;
}
node->setMouseOver(false);
it = mouseOver.erase(it);
}
if (input.jclicked(Mousecode::BUTTON_1)) {
if (pressed == nullptr && this->hover) {