Commit Diff


commit - 505b557c39f60c33968f0aa3252ad94ea45a6789
commit + 98d0e23f0c6d7384bfd5f4cfe5ac016c019f71e3
blob - 05dea7d5eeebc776750c1c185b4f4f6105f6ed6a
blob + f38629d25d4e1a4e1308def65684adf2c6022363
--- aui.h
+++ aui.h
@@ -71,11 +71,11 @@ struct aui_button_config {
 };
 
 struct aui_frame_config {
-	struct aui_color bg;
+	struct aui_color background;
 };
 
 struct aui_canvas_config {
-	struct aui_color bg;
+	struct aui_color background;
 };
 
 struct aui_label_config {
@@ -88,8 +88,11 @@ void aui_run(void);
 void aui_destroy(struct aui_widget *);
 struct aui_window *aui_window_new(struct aui_window_config *);
 struct aui_button *aui_button_new(struct aui_widget *, struct aui_button_config *);
-struct aui_frame *aui_frame_new(struct aui_widget *);
-struct aui_canvas *aui_canvas_new(struct aui_widget *);
+int aui_button_config(struct aui_widget *, struct aui_button_config *);
+struct aui_frame *aui_frame_new(struct aui_widget *, struct aui_frame_config *);
+int aui_frame_config(struct aui_widget *, struct aui_frame_config *);
+struct aui_canvas *aui_canvas_new(struct aui_widget *, struct aui_canvas_config *);
+int aui_canvas_config(struct aui_widget *, struct aui_canvas_config *);
 struct aui_label *aui_label_new(struct aui_widget *, struct aui_label_config *);
 int aui_label_config(struct aui_widget *, struct aui_label_config *);
 int aui_place(struct aui_widget *, struct aui_placepar *);
blob - 05d261df8fbc7e48865fdd6f704122cb3d5ad61f
blob + 4c55709846422afb7b0a278df81d9c3cae5d277f
--- aui_run.3
+++ aui_run.3
@@ -1,4 +1,4 @@
-.Dd $Mdocdate: June 25 2026$
+.Dd $Mdocdate: July 07 2026$
 .Dt AUI_RUN 3
 .Os
 .Sh NAME
@@ -24,8 +24,12 @@
 .Fn aui_button_new "struct aui_widget * parent" "struct aui_button_config * config"
 .Ft struct aui_label*
 .Fn aui_label_new "struct aui_widget * parent" "struct aui_label_config * config"
+.Ft int
+.Fn aui_label_config "struct aui_widget * widget" "struct aui_label_config * config"
 .Ft struct aui_frame*
-.Fn aui_frame_new "struct aui_widget * parent"
+.Fn aui_frame_new "struct aui_widget * parent" "struct aui_frame_config * config"
+.Ft int
+.Fn aui_frame_config "struct aui_widget * widget" "struct aui_frame_config * config"
 .Ft struct aui_canvas*
 .Fn aui_canvas_new "struct aui_widget * parent"
 .Ft int
@@ -68,7 +72,7 @@ library can understand. In the example above aw can be
 container like frame. Here is an example.
 .Pp
 .Bd -literal -offset indent
-struct aui_frame *frame = aui_frame_new(AUI_WIDGET(aw));
+struct aui_frame *frame = aui_frame_new(AUI_WIDGET(aw), NULL);
 struct aui_button *btn = aui_button_new(AUI_WIDGET(frame));
 .Ed
 .Pp
blob - 56a859f9038051123999454079c51e46acdeac6c
blob + d3bbeda2bba3d8e751a603f30dc66edd518f168a
--- canvas.c
+++ canvas.c
@@ -36,7 +36,7 @@ static struct aui_color colors[] = {
 };
 
 struct aui_canvas*
-aui_canvas_new(struct aui_widget *parent)
+aui_canvas_new(struct aui_widget *parent, struct aui_canvas_config *config)
 {
 	struct aui_canvas *canvas = calloc(1, sizeof(struct aui_canvas));
 	struct aui_widget *widget = (struct aui_widget *)canvas;
blob - 7cc1676291c032cf1d849d8ae3185b1e481d28b4
blob + a68537cc8a39f45621290298693e63dcd7c0b066
--- frame.c
+++ frame.c
@@ -23,12 +23,12 @@ static struct widget_ops frame_ops = {
 	frame_get_min_size,
 };
 
-static struct aui_color colors[] = {
-	{ 0x77, 0x77, 0x77, 0xff },
+static struct aui_frame_config default_config = {
+	.background = { 0x77, 0x77, 0x77, 0xff },
 };
 
 struct aui_frame*
-aui_frame_new(struct aui_widget *parent)
+aui_frame_new(struct aui_widget *parent, struct aui_frame_config *config)
 {
 	struct aui_frame *frame = calloc(1, sizeof(struct aui_frame));
 	struct aui_widget *widget = (struct aui_widget *)frame;
@@ -43,11 +43,23 @@ aui_frame_new(struct aui_widget *parent)
 	widget->primitives.list = calloc(widget->primitives.count, sizeof(struct primitive *));
 	widget->primitives.list[0] = driver->ops->create_rectangle();
 
-	driver->ops->set_rectangle_color(widget->window, widget->primitives.list[0], &colors[0]);
+	aui_frame_config(widget, config);
 
 	return frame;
 }
 
+int
+aui_frame_config(struct aui_widget *widget, struct aui_frame_config *config)
+{
+	struct aui_frame *frame = (struct aui_frame *)widget;
+
+	frame->config = (config == NULL) ? default_config : *config;
+	driver->ops->set_rectangle_color(widget->window, widget->primitives.list[0], 
+		&frame->config.background);
+
+	return 0;
+}
+
 static void
 frame_mouse_hover(struct aui_widget *widget, uint16_t x, uint16_t y)
 {
blob - 16fc86b3515613a0f806806202e8806d70ea3f2d
blob + f5e91b8a3d37b22614a38538601fcc76e0b3ea3e
--- widget.h
+++ widget.h
@@ -82,6 +82,7 @@ struct aui_window {
 
 struct aui_frame {
 	struct aui_container con;
+	struct aui_frame_config config;
 };
 
 struct aui_canvas_item {