--- 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) {