diff --git a/elements.cpp b/elements.cpp index 496a2c0..7608880 100644 --- a/elements.cpp +++ b/elements.cpp @@ -35,7 +35,8 @@ void ToggleHovered(Clay_ElementId element, Clay_PointerData pointer, intptr_t da } -void Toggle(Clay_String label, Clay_Color selected, bool &state) { +bool Toggle(Clay_String label, Clay_Color selected, bool &state) { + bool const before{state}; CLAY_AUTO_ID({ .layout = { .sizing = { CLAY_SIZING_GROW(), CLAY_SIZING_GROW() }, @@ -68,10 +69,12 @@ void Toggle(Clay_String label, Clay_Color selected, bool &state) { .textColor = theme->textColor }); } + // return if the value changed this frame + return before != state; } void Body(Clay_String string, Clay_TextElementConfig baseCfg) { - baseCfg.fontId = cera::FONT_DEFAULT; + baseCfg.fontId = cera::FONT_REGULAR; baseCfg.fontSize = cera::baseFontSize; CLAY_TEXT(string, CLAY_TEXT_CONFIG(baseCfg)); } diff --git a/elements.h b/elements.h index 5c1cff5..9c2d7ca 100644 --- a/elements.h +++ b/elements.h @@ -1,13 +1,14 @@ #ifndef ELEMENTS_H #define ELEMENTS_H -#include #include "style.h" +#include +#include namespace cera { typedef void(*OnHoveredFn)(Clay_ElementId element, Clay_PointerData pointer, intptr_t data); void TextButton(Clay_String text, Clay_Color color, OnHoveredFn onHovered, intptr_t onHoveredData = 0); -void Toggle(Clay_String label, Clay_Color selected, bool &state); +bool Toggle(Clay_String label, Clay_Color selected, bool &state); void Body(Clay_String string, Clay_TextElementConfig baseCfg = {.textColor = theme->textColor}); void Header(Clay_String string, size_t header, Clay_TextElementConfig baseCfg = {.textColor = theme->textColor}); }