aboutsummaryrefslogtreecommitdiff
path: root/src/saffron_widget.c
diff options
context:
space:
mode:
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;