From 642eedaa30ad2f69a3f01942ef263dd6fe68dc25 Mon Sep 17 00:00:00 2001 From: Iaroslav Erokhin <ysoftware@yandex.ru> Date: Wed, 5 Mar 2025 08:31:24 +0100 Subject: [PATCH] Add bool Clay_GetElementHovered(Clay_ElementId) --- clay.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/clay.h b/clay.h index 0fd4fe5..98e2272 100644 --- a/clay.h +++ b/clay.h @@ -832,6 +832,8 @@ CLAY_DLL_EXPORT Clay_ElementData Clay_GetElementData(Clay_ElementId id); // Returns true if the pointer position provided by Clay_SetPointerState is within the current element's bounding box. // Works during element declaration, e.g. CLAY({ .backgroundColor = Clay_Hovered() ? BLUE : RED }); CLAY_DLL_EXPORT bool Clay_Hovered(void); +// Returns true if an element with the specified id is found and if the pointer position provided by Clay_SetPointerState is within the element's bounding box. +CLAY_DLL_EXPORT bool Clay_GetElementHovered(Clay_ElementId elementId); // Bind a callback that will be called when the pointer position provided by Clay_SetPointerState is within the current element's bounding box. // - onHoverFunction is a function pointer to a user defined function. // - userData is a pointer that will be transparently passed through when the onHoverFunction is called. @@ -3960,6 +3962,19 @@ bool Clay_Hovered(void) { return false; } +bool Clay_GetElementHovered(Clay_ElementId elementId) { + Clay_Context* context = Clay_GetCurrentContext(); + if (context->booleanWarnings.maxElementsExceeded) { + return false; + } + for (int32_t i = 0; i < context->pointerOverIds.length; ++i) { + if (Clay__ElementIdArray_Get(&context->pointerOverIds, i)->id == elementId.id) { + return true; + } + } + return false; +} + void Clay_OnHover(void (*onHoverFunction)(Clay_ElementId elementId, Clay_PointerData pointerInfo, intptr_t userData), intptr_t userData) { Clay_Context* context = Clay_GetCurrentContext(); if (context->booleanWarnings.maxElementsExceeded) {