aboutsummaryrefslogtreecommitdiff
path: root/src/mgui/widget.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mgui/widget.c')
-rw-r--r--src/mgui/widget.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/mgui/widget.c b/src/mgui/widget.c
index 8a49715..b9865ca 100644
--- a/src/mgui/widget.c
+++ b/src/mgui/widget.c
@@ -5,6 +5,7 @@
#include "../../include/mgui/label.h"
#include "../../include/mgui/richtext.h"
#include "../../include/mgui/image.h"
+#include "../../include/alloc.h"
/* TODO: Use margin */
@@ -13,6 +14,29 @@ void mgui_widget_init(mgui_widget *self, mgui_widget_type type) {
mgui_widget_set_margin(self, 0, 0, 0, 0);
}
+void mgui_widget_destroy(mgui_widget *widget) {
+ switch(widget->type) {
+ case MGUI_WIDGET_LIST:
+ mgui_list_destroy(mgui_widget_to_list(widget));
+ break;
+ case MGUI_WIDGET_SCROLLVIEW:
+ mgui_scrollview_destroy(mgui_widget_to_scrollview(widget));
+ break;
+ case MGUI_WIDGET_BUTTON:
+ mgui_button_destroy(mgui_widget_to_button(widget));
+ break;
+ case MGUI_WIDGET_LABEL:
+ mgui_label_destroy(mgui_widget_to_label(widget));
+ break;
+ case MGUI_WIDGET_RICHTEXT:
+ mgui_richtext_destroy(mgui_widget_to_richtext(widget));
+ break;
+ case MGUI_WIDGET_IMAGE:
+ mgui_image_destroy(mgui_widget_to_image(widget));
+ break;
+ }
+}
+
void mgui_widget_set_margin(mgui_widget *self, int left, int top, int right, int bottom) {
self->margin.left = left;
self->margin.top = top;