diff options
Diffstat (limited to 'src/saffron_widget.c')
| -rw-r--r-- | src/saffron_widget.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/saffron_widget.c b/src/saffron_widget.c index 955e265..6cb1664 100644 --- a/src/saffron_widget.c +++ b/src/saffron_widget.c @@ -1,3 +1,5 @@ +#include "saffron_api.h" +#include "saffron_theme.h" #include <SDL3/SDL.h> #include <stdio.h> #include <stdlib.h> @@ -23,6 +25,7 @@ void saffron_widget_init(SaffronWidget* widget) { widget->type = SAFFRON_WIDGET_UNKNOWN; widget->free = NULL; + widget->theme = NULL; } SaffronWidget* saffron_widget_new(void) { @@ -75,6 +78,14 @@ void saffron_widget_add_child(SaffronWidget *parent, SaffronWidget *child) { if (parent->type == SAFFRON_WIDGET_BOX) { saffron_box_layout((SaffronBox*)parent); } + + if (!child->theme) { + if (parent->theme) { + child->theme = parent->theme; /* inherit from parent */ + } else { + child->theme = SF_MACRO_DEFAULT_THEME; + } + } } SaffronWidget* saffron_widget_hit_test(SaffronWidget* widget, int x, int y) { @@ -100,3 +111,9 @@ SaffronWidget* saffron_widget_hit_test(SaffronWidget* widget, int x, int y) { return widget; } + +void saffron_widget_set_theme(SaffronWidget *widget, SaffronTheme *theme) { + if (!theme) return; + if (!widget) return; + widget->theme = theme; +} |
