From 6ad244502d1c3c09a26012c5e7fad901c95cc38e Mon Sep 17 00:00:00 2001 From: Arslaan Pathan Date: Fri, 1 May 2026 21:38:49 +1200 Subject: Fix the buttons and implement hooks for future webkit bindings to build on top of --- include/saffron_api.h | 6 ++++++ include/saffron_event_hooks.h | 13 +++++++++++++ include/saffron_window.h | 3 +++ 3 files changed, 22 insertions(+) create mode 100644 include/saffron_event_hooks.h (limited to 'include') diff --git a/include/saffron_api.h b/include/saffron_api.h index 8ad340c..964eaa9 100644 --- a/include/saffron_api.h +++ b/include/saffron_api.h @@ -36,4 +36,10 @@ SaffronButton* saffron_button_new_with_text(SaffronText* text, bool enabled, voi void saffron_widget_set_theme(SaffronWidget* widget, SaffronTheme* theme); +/* very special function for special things + * also because i need an event hook that somewhat works + * for kiwihacks hackathon (wpewebkit bindings thing) +*/ +void saffron_hook_sdl_all_events(SaffronWindow* window, bool (*callback)(SDL_Event* event), int priority); + #endif diff --git a/include/saffron_event_hooks.h b/include/saffron_event_hooks.h new file mode 100644 index 0000000..92e689e --- /dev/null +++ b/include/saffron_event_hooks.h @@ -0,0 +1,13 @@ +#ifndef SAFFRON_EVENT_HOOKS_H +#define SAFFRON_EVENT_HOOKS_H + +#include + +/* this file will not be included in saffron.h. this is an internal file for internal hooking in the event loop. */ + +typedef struct { + bool (*callback)(SDL_Event* event); + int priority; // higher num = higher priority +} SfInternalEventHook; + +#endif diff --git a/include/saffron_window.h b/include/saffron_window.h index 80aaa39..89bf684 100644 --- a/include/saffron_window.h +++ b/include/saffron_window.h @@ -2,6 +2,7 @@ #define SAFFRON_WINDOW_H #include +#include "saffron_event_hooks.h" #include "saffron_widget.h" typedef struct { @@ -10,6 +11,8 @@ typedef struct { SDL_Renderer *renderer; int w, h; const char* title; + SfInternalEventHook hooks[32]; + int hook_count; } SaffronWindow; #endif -- cgit v1.2.3