ui/win32/container.c

changeset 891
0804fc9298f6
parent 880
9c99ff36513f
child 938
be4c88ded783
--- a/ui/win32/container.c	Tue Nov 04 20:38:19 2025 +0100
+++ b/ui/win32/container.c	Tue Nov 11 14:27:54 2025 +0100
@@ -35,7 +35,7 @@
 
 
 static W32WidgetClass grid_layout_widget_class = {
-    .eventproc = NULL,
+    .eventproc = ui_grid_widget_event,
     .enable = NULL,
     .show = w32_widget_default_show,
     .get_preferred_size = ui_grid_layout_get_preferred_size,
@@ -62,6 +62,14 @@
     ctn->container.newline = FALSE;
 }
 
+void ui_grid_widget_event(W32Widget *widget, HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
+    HDC hdc = (HDC)wParam;
+    UiGridWidget *grid = (UiGridWidget*)widget;
+    RECT rc;
+    GetClientRect(hwnd, &rc);
+    FillRect(hdc, &rc, grid->brush);
+}
+
 W32Size ui_grid_layout_get_preferred_size(W32Widget *widget) {
     UiGridLayout *grid = widget->layoutmanager;
     W32Size size;
@@ -134,26 +142,27 @@
             TEXT("STATIC"),
             NULL,
             WS_CHILD | WS_VISIBLE,
-            0, 0, 100, 100,
+            0, 0, 300, 300,
             parent,
             NULL,
             hInstance,
             NULL);
     SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)ui_default_eventproc);
 
-    W32Widget *widget = w32_widget_new(&grid_layout_widget_class, hwnd);
-    ui_container_add(container, widget, &layout);
+    UiGridWidget *widget = w32_widget_create(&grid_layout_widget_class, hwnd, sizeof(UiGridWidget));
+    ui_container_add(container, (W32Widget*)widget, &layout);
 
     UiContainerX *gridContainer = ui_grid_container_create(obj, hwnd, args->columnspacing, args->rowspacing, INSETS_ZERO);
     uic_object_push_container(obj, gridContainer);
 
     UiGridLayoutContainer *grid = (UiGridLayoutContainer*)gridContainer;
-    widget->layout = (W32LayoutFunc)ui_grid_layout;
-    widget->layoutmanager = grid->layout;
+    widget->widget.layout = (W32LayoutFunc)ui_grid_layout;
+    widget->widget.layoutmanager = grid->layout;
+    widget->brush = GetSysColorBrush(COLOR_BTNFACE);
     grid->layout->preferred_width = 200;
     grid->layout->preferred_height = 200;
 
-    return widget;
+    return (W32Widget*)widget;
 }
 
 UiContainerX* ui_grid_container_create(UiObject *obj, HWND hwnd, short columnspacing, short rowspacing, GridEdgeInsets padding) {

mercurial