diff options
| author | Arslaan Pathan <[email protected]> | 2026-04-26 17:24:42 +1200 |
|---|---|---|
| committer | Arslaan Pathan <[email protected]> | 2026-04-26 17:24:42 +1200 |
| commit | 15086bff2e32bf67f9a093b35b53b81a6b4851e0 (patch) | |
| tree | c26ded4d7893ea86eda4ba081fda0cd7295a09fa /src/saffron_widget.c | |
| parent | 4fbf7e5b7b5325828099456c347183ba92864862 (diff) | |
| download | saffron-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.c | 7 |
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; |
