Commit Diff


commit - c3628d8176854d6bdc1cb7e104626478162bb09f
commit + ab785159a83ddb3ca6309027f7e63139a707e5cf
blob - 9a3054785d21ab5b0521066d79388bcd36360df7
blob + 5fc883410e7985f9df5ed098ac4eccf2d393f75e
--- aui.h
+++ aui.h
@@ -65,6 +65,8 @@ struct aui_window_config {
 
 struct aui_button_config {
 	const char *text; /* Not allocated by libaui */
+	void (*command) (struct aui_button *, void *args);
+	void *args;
 };
 
 struct aui_frame_config {
blob - f5a9d06acc51ebbf6ca18aa7afc93f34839645b3
blob + 4897ca17c19fc08a18081dbf3320614ca265d819
--- button.c
+++ button.c
@@ -55,6 +55,7 @@ aui_button_new(struct aui_widget *parent, struct aui_b
 
 	driver->ops->set_rectangle_color(widget->window, widget->primitives.list[0], &color[0]);
 	driver->ops->set_rectangle_color(widget->window, widget->primitives.list[1], &color[1]);
+	driver->ops->set_text(widget->primitives.list[2], button->config.text, 0, 0);
 
 	return button;
 }
@@ -106,6 +107,9 @@ button_mouse_release(struct aui_widget *widget, uint16
 	btn->pressed = 0;
 
 	driver->ops->set_rectangle_color(widget->window, widget->primitives.list[1], &color[1]);
+
+	if (btn->config.command && widget_collides_with_point(widget, x, y))
+		 btn->config.command(btn, btn->config.args);
 }
 
 static void