From 4ffae4aeec2e5cc708f3a13899ad6b280b25b83f Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Sun, 16 Feb 2025 16:31:08 -0500 Subject: number field widget --- widget.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 widget.c (limited to 'widget.c') diff --git a/widget.c b/widget.c new file mode 100644 index 0000000..8a77b8f --- /dev/null +++ b/widget.c @@ -0,0 +1,28 @@ +#include + +#include "microui.h" +#include "widget.h" + +void +init_field(Field *f) { + f->buf[0] = '\0'; + f->value = 0.0; +} + +/* field draws a Field widget and updates its value. + * It returns MU_RES_CHANGE if the value has changed. */ +int +field(mu_Context *ctx, Field *f) { + double value; + int changed = 0; + if (mu_textbox(ctx, f->buf, sizeof(f->buf)) & MU_RES_CHANGE) { + if (sscanf(f->buf, "%lf", &value) == 1) { + f->value = value; + changed = 1; + } else if (f->buf[0] == '\0') { + f->value = 0.0; + changed = 1; + } + } + return changed ? MU_RES_CHANGE : 0; +} -- cgit v1.2.3