aboutsummaryrefslogtreecommitdiff
path: root/src/saffron_widget.c
diff options
context:
space:
mode:
authorArslaan Pathan <[email protected]>2026-04-26 17:24:42 +1200
committerArslaan Pathan <[email protected]>2026-04-26 17:24:42 +1200
commit15086bff2e32bf67f9a093b35b53b81a6b4851e0 (patch)
treec26ded4d7893ea86eda4ba081fda0cd7295a09fa /src/saffron_widget.c
parent4fbf7e5b7b5325828099456c347183ba92864862 (diff)
downloadsaffron-15086bff2e32bf67f9a093b35b53b81a6b4851e0.tar.xz
saffron-15086bff2e32bf67f9a093b35b53b81a6b4851e0.zip
QoL stuff and get a bit more of stuff implemented
Diffstat (limited to 'src/saffron_widget.c')
-rw-r--r--src/saffron_widget.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/saffron_widget.c b/src/saffron_widget.c
index b673e48..955e265 100644
--- a/src/saffron_widget.c
+++ b/src/saffron_widget.c
@@ -22,6 +22,7 @@ void saffron_widget_init(SaffronWidget* widget) {
widget->pixel_perfect = false;
widget->type = SAFFRON_WIDGET_UNKNOWN;
+ widget->free = NULL;
}
SaffronWidget* saffron_widget_new(void) {
@@ -45,6 +46,10 @@ void saffron_widget_free(SaffronWidget *widget) {
saffron_widget_free(widget->children[i]);
}
+ if (widget->free) {
+ widget->free(widget);
+ }
+
free(widget->children);
free(widget);
}
@@ -90,7 +95,7 @@ SaffronWidget* saffron_widget_hit_test(SaffronWidget* widget, int x, int y) {
for (int i = widget->child_count - 1; i >= 0; i--) {
printf("[Saffron] recursing to child (%i)\n", i);
SaffronWidget* hit = saffron_widget_hit_test(widget->children[i], x, y);
- if (hit) return hit;
+ if (hit && hit->on_click) return hit;
}
return widget;