fix win32 build

Tue, 21 Jul 2026 16:46:44 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Tue, 21 Jul 2026 16:46:44 +0200
changeset 1219
86ed681698aa
parent 1218
943fc009bd1c
child 1220
185d9fe96c6b

fix win32 build

ucx/allocator.c file | annotate | diff | comparison | revisions
ui/ui/toolkit.h file | annotate | diff | comparison | revisions
ui/win32/container.c file | annotate | diff | comparison | revisions
ui/win32/container.h file | annotate | diff | comparison | revisions
ui/win32/menu.c file | annotate | diff | comparison | revisions
ui/win32/menu.h file | annotate | diff | comparison | revisions
ui/win32/text.c file | annotate | diff | comparison | revisions
ui/win32/text.h file | annotate | diff | comparison | revisions
ui/win32/window.c file | annotate | diff | comparison | revisions
--- a/ucx/allocator.c	Wed Jul 15 20:03:33 2026 +0200
+++ b/ucx/allocator.c	Tue Jul 21 16:46:44 2026 +0200
@@ -101,8 +101,8 @@
         &cx_stdlib_allocator_class,
         NULL
 };
-const CxAllocator * const cxStdlibAllocator = &cx_stdlib_allocator;
-const CxAllocator * cxDefaultAllocator = &cx_stdlib_allocator;
+CX_EXPORT const CxAllocator * const cxStdlibAllocator = &cx_stdlib_allocator;
+CX_EXPORT const CxAllocator * cxDefaultAllocator = &cx_stdlib_allocator;
 
 int cx_reallocate_(
         void **mem,
--- a/ui/ui/toolkit.h	Wed Jul 15 20:03:33 2026 +0200
+++ b/ui/ui/toolkit.h	Tue Jul 21 16:46:44 2026 +0200
@@ -91,6 +91,7 @@
 #elif UI_WIN32
 
 #include "win32.h"
+typedef SSIZE_T ssize_t;
 
 #define UIWIDGET W32Widget*
 #define UIWINDOW void*
--- a/ui/win32/container.c	Wed Jul 15 20:03:33 2026 +0200
+++ b/ui/win32/container.c	Tue Jul 21 16:46:44 2026 +0200
@@ -99,14 +99,14 @@
     return box_create(obj, args, UI_BOX_HORIZONTAL);
 }
 
-UiContainerX* ui_box_container_create(UiObject *obj, HWND hwnd, UiBoxOrientation orientation, short spacing, GridEdgeInsets padding) {
+UiContainer* ui_box_container_create(UiObject *obj, HWND hwnd, UiBoxOrientation orientation, short spacing, GridEdgeInsets padding) {
     UiBoxContainer *container = cxZalloc(obj->ctx->allocator, sizeof(UiBoxContainer));
     container->container.hwnd = hwnd;
     container->container.add = ui_box_container_add;
     container->layout = ui_grid_layout_create(obj->ctx->allocator, spacing, spacing);
     container->layout->padding = padding;
     container->orientation = orientation;
-    return (UiContainerX*)container;
+    return (UiContainer*)container;
 }
 
 void ui_box_container_add(UiContainerPrivate *ctn, W32Widget *widget, UiLayout *layout) {
@@ -156,7 +156,7 @@
     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);
+    UiContainer *gridContainer = ui_grid_container_create(obj, hwnd, args->columnspacing, args->rowspacing, INSETS_ZERO);
     uic_object_push_container(obj, gridContainer);
 
     UiGridLayoutContainer *grid = (UiGridLayoutContainer*)gridContainer;
@@ -169,13 +169,13 @@
     return (W32Widget*)widget;
 }
 
-UiContainerX* ui_grid_container_create(UiObject *obj, HWND hwnd, short columnspacing, short rowspacing, GridEdgeInsets padding) {
+UiContainer* ui_grid_container_create(UiObject *obj, HWND hwnd, short columnspacing, short rowspacing, GridEdgeInsets padding) {
     UiGridLayoutContainer *container = cxZalloc(obj->ctx->allocator, sizeof(UiGridLayoutContainer));
     container->container.hwnd = hwnd;
     container->container.add = ui_grid_container_add;
     container->layout = ui_grid_layout_create(obj->ctx->allocator, columnspacing, rowspacing);
     container->layout->padding = padding;
-    return (UiContainerX*)container;
+    return (UiContainer*)container;
 }
 
 void ui_grid_container_add(UiContainerPrivate *ctn, W32Widget *widget, UiLayout *layout) {
@@ -204,12 +204,12 @@
 /* ---------------------------- Container Helper ---------------------------- */
 
 void ui_container_begin_close(UiObject *obj) {
-    UiContainerX *ct = obj->container_end;
+    UiContainer *ct = obj->container_end;
     ct->close = 1;
 }
 
 int ui_container_finish(UiObject *obj) {
-    UiContainerX *ct = obj->container_end;
+    UiContainer *ct = obj->container_end;
     if(ct->close) {
         ui_end_new(obj);
         return 0;
--- a/ui/win32/container.h	Wed Jul 15 20:03:33 2026 +0200
+++ b/ui/win32/container.h	Tue Jul 21 16:46:44 2026 +0200
@@ -63,7 +63,7 @@
 
 
 struct UiContainerPrivate {
-    UiContainerX    container;
+    UiContainer     container;
     HWND            (*parent)(UiContainerPrivate*);
     void            (*add)(UiContainerPrivate*, W32Widget*, UiLayout*);
     UiContainerType type;
@@ -101,10 +101,10 @@
 int ui_grid_widget_event(W32Widget *widget, HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
 W32Size ui_grid_layout_get_preferred_size(W32Widget *widget);
 
-UiContainerX* ui_box_container_create(UiObject *obj, HWND hwnd, UiBoxOrientation orientation, short spacing, GridEdgeInsets padding);
+UiContainer* ui_box_container_create(UiObject *obj, HWND hwnd, UiBoxOrientation orientation, short spacing, GridEdgeInsets padding);
 void ui_box_container_add(UiContainerPrivate *ctn, W32Widget *widget, UiLayout *layout);
 
-UiContainerX* ui_grid_container_create(
+UiContainer* ui_grid_container_create(
     UiObject *obj,
     HWND hwnd,
     short columnspacing,
--- a/ui/win32/menu.c	Wed Jul 15 20:03:33 2026 +0200
+++ b/ui/win32/menu.c	Tue Jul 21 16:46:44 2026 +0200
@@ -289,6 +289,7 @@
     ls->command_ids = cxArrayListCreate(a, sizeof(uint64_t), 16);
     ls->index = pos;
     ls->getvalue = il->getvalue;
+    ls->getvaluedata = NULL; // TODO
     ls->callback = il->callback;
     ls->userdata = il->userdata;
     ls->addseparator = il->addseparator;
@@ -339,12 +340,15 @@
     }
     cxListClear(list->command_ids); // TODO: we could reuse some of the ids
 
-    ui_getvaluefunc getvalue = list->getvalue;
+    ui_getvaluefunc2 getvalue = list->getvalue;
+    void *getvaluedata = list->getvaluedata;
     void* elm = ui_list_first(ls);
 
     int pos = list->index;
+    int row = 0;
     while(elm) {
-        char *label = (char*) (getvalue ? getvalue(elm, 0) : elm);
+        UiBool freeResult = FALSE;
+        char *label = (char*) (getvalue ? getvalue(ls, elm, row, 0, getvaluedata, &freeResult) : elm);
         if (!label) {
             label = "";
         }
@@ -353,7 +357,12 @@
         InsertMenu(list->menu, pos++, MF_STRING, id, label);
         cxListAdd(list->command_ids, &id);
 
+        if (freeResult) {
+            free(label);
+        }
+
         elm = ui_list_next(ls);
+        row++;
     }
 }
 
--- a/ui/win32/menu.h	Wed Jul 15 20:03:33 2026 +0200
+++ b/ui/win32/menu.h	Tue Jul 21 16:46:44 2026 +0200
@@ -55,7 +55,8 @@
     CxList           *command_ids;
     int              index;
     UiVar            *var;
-    ui_getvaluefunc  getvalue;
+    ui_getvaluefunc2 getvalue;
+    void             *getvaluedata;
     ui_callback      callback;
     void             *userdata;
     bool             addseparator;
--- a/ui/win32/text.c	Wed Jul 15 20:03:33 2026 +0200
+++ b/ui/win32/text.c	Tue Jul 21 16:46:44 2026 +0200
@@ -127,7 +127,7 @@
     return NULL;
 }
 
-void  ui_textarea_insert(UiText *text, int pos, char *str) {
+void  ui_textarea_insert(UiText *text, int pos, const char *str) {
 
 }
 
--- a/ui/win32/text.h	Wed Jul 15 20:03:33 2026 +0200
+++ b/ui/win32/text.h	Tue Jul 21 16:46:44 2026 +0200
@@ -53,7 +53,7 @@
 void  ui_textarea_set(UiText *text, const char *str);
 char* ui_textarea_get(UiText *text);
 char* ui_textarea_getsubstr(UiText *text, int begin, int end);
-void  ui_textarea_insert(UiText *text, int pos, char *str);
+void  ui_textarea_insert(UiText *text, int pos, const char *str);
 void  ui_textarea_setposition(UiText *text, int pos);
 int   ui_textarea_position(UiText *text);
 void  ui_textarea_setselection(UiText *text, int begin, int end);
--- a/ui/win32/window.c	Wed Jul 15 20:03:33 2026 +0200
+++ b/ui/win32/window.c	Tue Jul 21 16:46:44 2026 +0200
@@ -105,7 +105,7 @@
 
     UpdateWindow(hwnd);
 
-    UiContainerX *container = ui_box_container_create(obj, hwnd, UI_BOX_VERTICAL, 0, INSETS_ZERO);
+    UiContainer *container = ui_box_container_create(obj, hwnd, UI_BOX_VERTICAL, 0, INSETS_ZERO);
     uic_object_push_container(obj, container);
     UiBoxContainer *box = (UiBoxContainer*)container;
 

mercurial