Sun, 07 Dec 2025 15:50:20 +0100
rename tree.h to list.h
--- a/ui/cocoa/ListDataSource.h Sun Dec 07 15:47:53 2025 +0100 +++ b/ui/cocoa/ListDataSource.h Sun Dec 07 15:50:20 2025 +0100 @@ -27,7 +27,7 @@ */ #import "toolkit.h" -#import "../ui/tree.h" +#import "../ui/list.h" @interface ListDataSource : NSObject <NSTableViewDataSource>
--- a/ui/cocoa/list.h Sun Dec 07 15:47:53 2025 +0100 +++ b/ui/cocoa/list.h Sun Dec 07 15:50:20 2025 +0100 @@ -28,7 +28,7 @@ #import "toolkit.h" #import "Container.h" -#import "../ui/tree.h" +#import "../ui/list.h" #import "ListDataSource.h"
--- a/ui/common/args.h Sun Dec 07 15:47:53 2025 +0100 +++ b/ui/common/args.h Sun Dec 07 15:50:20 2025 +0100 @@ -36,7 +36,7 @@ #include "../ui/entry.h" #include "../ui/menu.h" #include "../ui/toolbar.h" -#include "../ui/tree.h" +#include "../ui/list.h" #include "../ui/text.h" #include "../ui/webview.h" #include "../ui/widget.h"
--- a/ui/common/types.c Sun Dec 07 15:47:53 2025 +0100 +++ b/ui/common/types.c Sun Dec 07 15:50:20 2025 +0100 @@ -33,7 +33,7 @@ #include <cx/list.h> #include <cx/array_list.h> -#include "../ui/tree.h" +#include "../ui/list.h" #include "types.h" #include "context.h" #include "../ui/image.h"
--- a/ui/common/wrapper.h Sun Dec 07 15:47:53 2025 +0100 +++ b/ui/common/wrapper.h Sun Dec 07 15:50:20 2025 +0100 @@ -30,7 +30,7 @@ #define UIC_WRAPPER_H #include "../ui/toolkit.h" -#include "../ui/tree.h" +#include "../ui/list.h" #ifdef __cplusplus extern "C" {
--- a/ui/gtk/list.h Sun Dec 07 15:47:53 2025 +0100 +++ b/ui/gtk/list.h Sun Dec 07 15:50:20 2025 +0100 @@ -26,10 +26,10 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#ifndef TREE_H -#define TREE_H +#ifndef LIST_H +#define LIST_H -#include "../ui/tree.h" +#include "../ui/list.h" #include "toolkit.h" #include <cx/array_list.h> @@ -209,5 +209,5 @@ } #endif -#endif /* TREE_H */ +#endif /* LIST_H */
--- a/ui/motif/list.h Sun Dec 07 15:47:53 2025 +0100 +++ b/ui/motif/list.h Sun Dec 07 15:50:20 2025 +0100 @@ -30,7 +30,7 @@ #define LIST_H #include "toolkit.h" -#include "../ui/tree.h" +#include "../ui/list.h" #include "../common/context.h" #ifdef __cplusplus
--- a/ui/qt/list.h Sun Dec 07 15:47:53 2025 +0100 +++ b/ui/qt/list.h Sun Dec 07 15:50:20 2025 +0100 @@ -29,7 +29,7 @@ #ifndef TREE_H #define TREE_H -#include "../ui/tree.h" +#include "../ui/list.h" #include "model.h" #include <QTableView>
--- a/ui/qt/model.h Sun Dec 07 15:47:53 2025 +0100 +++ b/ui/qt/model.h Sun Dec 07 15:50:20 2025 +0100 @@ -30,7 +30,7 @@ #define MODEL_H #include "toolkit.h" -#include "../ui/tree.h" +#include "../ui/list.h" #include "../common/context.h" #include <QListView> #include <QTreeView>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/ui/list.h Sun Dec 07 15:50:20 2025 +0100 @@ -0,0 +1,365 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright 2017 Olaf Wintermann. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef UI_TREE_H +#define UI_TREE_H + +#include "toolkit.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct UiModel UiModel; +typedef struct UiListCallbacks UiListCallbacks; +typedef struct UiListDnd UiListDnd; + +typedef struct UiListArgs UiListArgs; +typedef struct UiSourceListArgs UiSourceListArgs; + +typedef struct UiSubList UiSubList; +typedef struct UiSubListItem UiSubListItem; + +typedef enum UiModelType { + UI_STRING = 0, + UI_STRING_FREE, + UI_INTEGER, + UI_ICON, + UI_ICON_TEXT, + UI_ICON_TEXT_FREE, + UI_STRING_EDITABLE, + UI_BOOL_EDITABLE +} UiModelType; + +typedef struct UiCellValue { + union { + const char *string; + int64_t i; + UiBool b; + }; + UiModelType type; +} UiCellValue; + +typedef UiBool (*ui_list_savefunc)(UiList *list, int row, int col, UiCellValue *value, void *userdata); + +typedef void (*ui_model_update_func)(UiModel *model, void *userdata, int insert_index, int delete_index); + +typedef struct UiModelChangeObserver UiModelChangeObserver; +struct UiModelChangeObserver { + ui_model_update_func update; + void *userdata; + UiModelChangeObserver *next; +}; + +struct UiModel { + UiContext *ctx; + + /* + * number of columns + */ + int columns; + + /* + * current allocation size (internal) + */ + int alloc; + + /* + * array of column types + * array length is the number of columns + */ + UiModelType *types; + + /* + * array of column titles + * array length is the number of columns + */ + char **titles; + + /* + * array of column size hints + */ + int *columnsize; + + /* + * Model change observers, that will be called when + * columns are added or removed + */ + UiModelChangeObserver *observer; + + /* + * reference counter + */ + int ref; +}; + +struct UiListCallbacks { + /* + * selection callback + */ + ui_callback activate; + + /* + * cursor callback + */ + ui_callback selection; + + /* + * userdata for all callbacks + */ + void *userdata; +}; + +struct UiListArgs { + UiBool fill; + UiBool hexpand; + UiBool vexpand; + UiBool hfill; + UiBool vfill; + UiBool override_defaults; + int margin; + int margin_left; + int margin_right; + int margin_top; + int margin_bottom; + int colspan; + int rowspan; + int width; + int height; + + const char *name; + const char *style_class; + UiList *list; + const char* varname; + UiModel *model; + char **static_elements; + size_t static_nelm; + ui_getvaluefunc getvalue; + ui_getvaluefunc2 getvalue2; + void *getvalue2data; + ui_getstylefunc getstyle; + void *getstyledata; + ui_callback onactivate; + void *onactivatedata; + ui_callback onselection; + void *onselectiondata; + ui_callback ondragstart; + void *ondragstartdata; + ui_callback ondragcomplete; + void *ondragcompletedata; + ui_callback ondrop; + void *ondropdata; + UiBool multiselection; + UiMenuBuilder *contextmenu; + ui_list_savefunc onsave; + void *onsavedata; + + const int *states; +}; + +typedef void (*ui_sublist_getvalue_func)(UiList *list, void *sublist_userdata, void *rowdata, int index, UiSubListItem *item, void *userdata); + +struct UiSubList { + UiList *value; + const char *varname; + const char *header; + UiBool separator; + void *userdata; +}; + +typedef struct UiSubListEventData { + UiList *list; + int sublist_index; + int row_index; + void *row_data; + void *sublist_userdata; + void *event_data; +} UiSubListEventData; + +/* + * list item members must be filled by the sublist getvalue func + * all members must be allocated (by malloc, strdup, ...) the pointer + * will be passed to free + */ +struct UiSubListItem { + char *icon; + char *label; + char *button_icon; + char *button_label; + UiMenuBuilder *button_menu; + char *badge; + void *eventdata; +}; + +struct UiSourceListArgs { + UiBool fill; + UiBool hexpand; + UiBool vexpand; + UiBool hfill; + UiBool vfill; + UiBool override_defaults; + int margin; + int margin_left; + int margin_right; + int margin_top; + int margin_bottom; + int colspan; + int rowspan; + int width; + int height; + const char *name; + const char *style_class; + + const int *states; + + /* + * static list of sublists + * a sublist must have a varname or a value + * + * the last entry in the list must contain all NULL values or numsublists + * must contain the number of sublists + * + * sublists can be NULL, in which case sublists are dynamically loaded + * from dynamic_sublist/varname + */ + UiSubList *sublists; + /* + * optional number of sublists + * if the value is 0, it is assumed, that sublists is null-terminated + * (last item contains only NULL values) + */ + size_t numsublists; + + /* + * list value, that contains UiSubList* elements + */ + UiList *dynamic_sublist; + + /* + * load sublists dynamically from a variable with the specified name + */ + const char *varname; + + + /* + * callback for each list item, that should fill all necessary + * UiSubListItem fields + */ + ui_sublist_getvalue_func getvalue; + + /* + * getvalue_func userdata + */ + void *getvaluedata; + + /* + * is a sublist header a selectable item + */ + UiBool header_is_item; + + /* + * activated when a list item is selected + */ + ui_callback onactivate; + void *onactivatedata; + + /* + * activated, when the additional list item button is clicked + */ + ui_callback onbuttonclick; + void *onbuttonclickdata; + + UiMenuBuilder *contextmenu; +}; + +#define UI_SUBLIST(...) (UiSubList){ __VA_ARGS__ } +#define UI_SUBLISTS(...) (UiSubList[]){ __VA_ARGS__, (UiSubList){NULL,NULL,NULL,0} } + + +/* + * Creates an UiModel, that specifies columns for a table widget. + * + * For each column a column type (UiModelType) and a title string + * (char*) must be specified. The column list must be terminated + * with -1. + * + * UiModel *model = ui_model(ctx, UI_STRING, "Column 1", UI_STRING, "Column 2", -1); + */ +UIEXPORT UiModel* ui_model(UiContext *ctx, ...); +UIEXPORT UiModel* ui_model_new(UiContext *ctx); +UIEXPORT void ui_model_add_column(UiModel *model, UiModelType type, const char *title, int width); +UIEXPORT UiModel* ui_model_copy(UiContext *ctx, UiModel* model); +UIEXPORT void ui_model_ref(UiModel *model); +UIEXPORT void ui_model_unref(UiModel *model); +UIEXPORT void ui_model_add_observer(UiModel *model, ui_model_update_func update, void *data); +UIEXPORT void ui_model_remove_observer(UiModel *model, void *data); +UIEXPORT void ui_model_free(UiModel *mi); + +#define ui_listview(obj, ...) ui_listview_create(obj, &(UiListArgs) { __VA_ARGS__ } ) +#define ui_table(obj, ...) ui_table_create(obj, &(UiListArgs) { __VA_ARGS__ } ) +#define ui_dropdown(obj, ...) ui_dropdown_create(obj, &(UiListArgs) { __VA_ARGS__ } ) +#define ui_breadcrumbbar(obj, ...) ui_breadcrumbbar_create(obj, &(UiListArgs) { __VA_ARGS__ } ) +#define ui_sourcelist(obj, ...) ui_sourcelist_create(obj, &(UiSourceListArgs) { __VA_ARGS__ } ) + +UIEXPORT UIWIDGET ui_listview_create(UiObject *obj, UiListArgs *args); +UIEXPORT UIWIDGET ui_table_create(UiObject *obj, UiListArgs *args); +UIEXPORT UIWIDGET ui_dropdown_create(UiObject *obj, UiListArgs *args); +UIEXPORT UIWIDGET ui_breadcrumbbar_create(UiObject *obj, UiListArgs *args); + +UIEXPORT void ui_listview_select(UIWIDGET listview, int index); +UIEXPORT void ui_dropdown_select(UIWIDGET dropdown, int index); + +UIEXPORT UIWIDGET ui_sourcelist_create(UiObject *obj, UiSourceListArgs *args); + +UIEXPORT void ui_sublist_item_set_icon(UiSubListItem *item, const char *icon); +UIEXPORT void ui_sublist_item_set_label(UiSubListItem *item, const char *label); +UIEXPORT void ui_sublist_item_set_button_icon(UiSubListItem *item, const char *button_icon); +UIEXPORT void ui_sublist_item_set_button_label(UiSubListItem *item, const char *button_label); +UIEXPORT void ui_sublist_item_set_button_menu(UiSubListItem *item, UiMenuBuilder *menu); +UIEXPORT void ui_sublist_item_set_badge(UiSubListItem *item, const char *badge); +UIEXPORT void ui_sublist_item_set_eventdata(UiSubListItem *item, void *eventdata); + + + +/* + * Only relevant for some language bindings + */ +typedef void(*ui_sourcelist_update_func)(void); + +/* + * The sourcelist update callback is called after any source list + * sublist update is completed + */ +UIEXPORT void ui_sourcelist_set_update_callback(ui_sourcelist_update_func cb); + +#ifdef __cplusplus +} +#endif + +#endif /* UI_TREE_H */ +
--- a/ui/ui/tree.h Sun Dec 07 15:47:53 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,365 +0,0 @@ -/* - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. - * - * Copyright 2017 Olaf Wintermann. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef UI_TREE_H -#define UI_TREE_H - -#include "toolkit.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct UiModel UiModel; -typedef struct UiListCallbacks UiListCallbacks; -typedef struct UiListDnd UiListDnd; - -typedef struct UiListArgs UiListArgs; -typedef struct UiSourceListArgs UiSourceListArgs; - -typedef struct UiSubList UiSubList; -typedef struct UiSubListItem UiSubListItem; - -typedef enum UiModelType { - UI_STRING = 0, - UI_STRING_FREE, - UI_INTEGER, - UI_ICON, - UI_ICON_TEXT, - UI_ICON_TEXT_FREE, - UI_STRING_EDITABLE, - UI_BOOL_EDITABLE -} UiModelType; - -typedef struct UiCellValue { - union { - const char *string; - int64_t i; - UiBool b; - }; - UiModelType type; -} UiCellValue; - -typedef UiBool (*ui_list_savefunc)(UiList *list, int row, int col, UiCellValue *value, void *userdata); - -typedef void (*ui_model_update_func)(UiModel *model, void *userdata, int insert_index, int delete_index); - -typedef struct UiModelChangeObserver UiModelChangeObserver; -struct UiModelChangeObserver { - ui_model_update_func update; - void *userdata; - UiModelChangeObserver *next; -}; - -struct UiModel { - UiContext *ctx; - - /* - * number of columns - */ - int columns; - - /* - * current allocation size (internal) - */ - int alloc; - - /* - * array of column types - * array length is the number of columns - */ - UiModelType *types; - - /* - * array of column titles - * array length is the number of columns - */ - char **titles; - - /* - * array of column size hints - */ - int *columnsize; - - /* - * Model change observers, that will be called when - * columns are added or removed - */ - UiModelChangeObserver *observer; - - /* - * reference counter - */ - int ref; -}; - -struct UiListCallbacks { - /* - * selection callback - */ - ui_callback activate; - - /* - * cursor callback - */ - ui_callback selection; - - /* - * userdata for all callbacks - */ - void *userdata; -}; - -struct UiListArgs { - UiBool fill; - UiBool hexpand; - UiBool vexpand; - UiBool hfill; - UiBool vfill; - UiBool override_defaults; - int margin; - int margin_left; - int margin_right; - int margin_top; - int margin_bottom; - int colspan; - int rowspan; - int width; - int height; - - const char *name; - const char *style_class; - UiList *list; - const char* varname; - UiModel *model; - char **static_elements; - size_t static_nelm; - ui_getvaluefunc getvalue; - ui_getvaluefunc2 getvalue2; - void *getvalue2data; - ui_getstylefunc getstyle; - void *getstyledata; - ui_callback onactivate; - void *onactivatedata; - ui_callback onselection; - void *onselectiondata; - ui_callback ondragstart; - void *ondragstartdata; - ui_callback ondragcomplete; - void *ondragcompletedata; - ui_callback ondrop; - void *ondropdata; - UiBool multiselection; - UiMenuBuilder *contextmenu; - ui_list_savefunc onsave; - void *onsavedata; - - const int *states; -}; - -typedef void (*ui_sublist_getvalue_func)(UiList *list, void *sublist_userdata, void *rowdata, int index, UiSubListItem *item, void *userdata); - -struct UiSubList { - UiList *value; - const char *varname; - const char *header; - UiBool separator; - void *userdata; -}; - -typedef struct UiSubListEventData { - UiList *list; - int sublist_index; - int row_index; - void *row_data; - void *sublist_userdata; - void *event_data; -} UiSubListEventData; - -/* - * list item members must be filled by the sublist getvalue func - * all members must be allocated (by malloc, strdup, ...) the pointer - * will be passed to free - */ -struct UiSubListItem { - char *icon; - char *label; - char *button_icon; - char *button_label; - UiMenuBuilder *button_menu; - char *badge; - void *eventdata; -}; - -struct UiSourceListArgs { - UiBool fill; - UiBool hexpand; - UiBool vexpand; - UiBool hfill; - UiBool vfill; - UiBool override_defaults; - int margin; - int margin_left; - int margin_right; - int margin_top; - int margin_bottom; - int colspan; - int rowspan; - int width; - int height; - const char *name; - const char *style_class; - - const int *states; - - /* - * static list of sublists - * a sublist must have a varname or a value - * - * the last entry in the list must contain all NULL values or numsublists - * must contain the number of sublists - * - * sublists can be NULL, in which case sublists are dynamically loaded - * from dynamic_sublist/varname - */ - UiSubList *sublists; - /* - * optional number of sublists - * if the value is 0, it is assumed, that sublists is null-terminated - * (last item contains only NULL values) - */ - size_t numsublists; - - /* - * list value, that contains UiSubList* elements - */ - UiList *dynamic_sublist; - - /* - * load sublists dynamically from a variable with the specified name - */ - const char *varname; - - - /* - * callback for each list item, that should fill all necessary - * UiSubListItem fields - */ - ui_sublist_getvalue_func getvalue; - - /* - * getvalue_func userdata - */ - void *getvaluedata; - - /* - * is a sublist header a selectable item - */ - UiBool header_is_item; - - /* - * activated when a list item is selected - */ - ui_callback onactivate; - void *onactivatedata; - - /* - * activated, when the additional list item button is clicked - */ - ui_callback onbuttonclick; - void *onbuttonclickdata; - - UiMenuBuilder *contextmenu; -}; - -#define UI_SUBLIST(...) (UiSubList){ __VA_ARGS__ } -#define UI_SUBLISTS(...) (UiSubList[]){ __VA_ARGS__, (UiSubList){NULL,NULL,NULL,0} } - - -/* - * Creates an UiModel, that specifies columns for a table widget. - * - * For each column a column type (UiModelType) and a title string - * (char*) must be specified. The column list must be terminated - * with -1. - * - * UiModel *model = ui_model(ctx, UI_STRING, "Column 1", UI_STRING, "Column 2", -1); - */ -UIEXPORT UiModel* ui_model(UiContext *ctx, ...); -UIEXPORT UiModel* ui_model_new(UiContext *ctx); -UIEXPORT void ui_model_add_column(UiModel *model, UiModelType type, const char *title, int width); -UIEXPORT UiModel* ui_model_copy(UiContext *ctx, UiModel* model); -UIEXPORT void ui_model_ref(UiModel *model); -UIEXPORT void ui_model_unref(UiModel *model); -UIEXPORT void ui_model_add_observer(UiModel *model, ui_model_update_func update, void *data); -UIEXPORT void ui_model_remove_observer(UiModel *model, void *data); -UIEXPORT void ui_model_free(UiModel *mi); - -#define ui_listview(obj, ...) ui_listview_create(obj, &(UiListArgs) { __VA_ARGS__ } ) -#define ui_table(obj, ...) ui_table_create(obj, &(UiListArgs) { __VA_ARGS__ } ) -#define ui_dropdown(obj, ...) ui_dropdown_create(obj, &(UiListArgs) { __VA_ARGS__ } ) -#define ui_breadcrumbbar(obj, ...) ui_breadcrumbbar_create(obj, &(UiListArgs) { __VA_ARGS__ } ) -#define ui_sourcelist(obj, ...) ui_sourcelist_create(obj, &(UiSourceListArgs) { __VA_ARGS__ } ) - -UIEXPORT UIWIDGET ui_listview_create(UiObject *obj, UiListArgs *args); -UIEXPORT UIWIDGET ui_table_create(UiObject *obj, UiListArgs *args); -UIEXPORT UIWIDGET ui_dropdown_create(UiObject *obj, UiListArgs *args); -UIEXPORT UIWIDGET ui_breadcrumbbar_create(UiObject *obj, UiListArgs *args); - -UIEXPORT void ui_listview_select(UIWIDGET listview, int index); -UIEXPORT void ui_dropdown_select(UIWIDGET dropdown, int index); - -UIEXPORT UIWIDGET ui_sourcelist_create(UiObject *obj, UiSourceListArgs *args); - -UIEXPORT void ui_sublist_item_set_icon(UiSubListItem *item, const char *icon); -UIEXPORT void ui_sublist_item_set_label(UiSubListItem *item, const char *label); -UIEXPORT void ui_sublist_item_set_button_icon(UiSubListItem *item, const char *button_icon); -UIEXPORT void ui_sublist_item_set_button_label(UiSubListItem *item, const char *button_label); -UIEXPORT void ui_sublist_item_set_button_menu(UiSubListItem *item, UiMenuBuilder *menu); -UIEXPORT void ui_sublist_item_set_badge(UiSubListItem *item, const char *badge); -UIEXPORT void ui_sublist_item_set_eventdata(UiSubListItem *item, void *eventdata); - - - -/* - * Only relevant for some language bindings - */ -typedef void(*ui_sourcelist_update_func)(void); - -/* - * The sourcelist update callback is called after any source list - * sublist update is completed - */ -UIEXPORT void ui_sourcelist_set_update_callback(ui_sourcelist_update_func cb); - -#ifdef __cplusplus -} -#endif - -#endif /* UI_TREE_H */ -
--- a/ui/ui/ui.h Sun Dec 07 15:47:53 2025 +0100 +++ b/ui/ui/ui.h Sun Dec 07 15:50:20 2025 +0100 @@ -38,7 +38,7 @@ #include "button.h" #include "text.h" #include "properties.h" -#include "tree.h" +#include "list.h" #include "graphics.h" #include "entry.h" #include "range.h"
--- a/ui/win32/list.h Sun Dec 07 15:47:53 2025 +0100 +++ b/ui/win32/list.h Sun Dec 07 15:50:20 2025 +0100 @@ -30,7 +30,7 @@ #define LIST_H #include "toolkit.h" -#include "../ui/tree.h" +#include "../ui/list.h" #include "win32.h" #include <commctrl.h>
--- a/ui/winui/list.h Sun Dec 07 15:47:53 2025 +0100 +++ b/ui/winui/list.h Sun Dec 07 15:50:20 2025 +0100 @@ -28,7 +28,7 @@ #pragma once -#include "../ui/tree.h" +#include "../ui/list.h" #include "toolkit.h" #include "../ui/container.h"
--- a/ui/winui/table.h Sun Dec 07 15:47:53 2025 +0100 +++ b/ui/winui/table.h Sun Dec 07 15:50:20 2025 +0100 @@ -28,7 +28,7 @@ #pragma once -#include "../ui/tree.h" +#include "../ui/list.h" #include "toolkit.h" #include "dnd.h"
--- a/ui/winui/winui.vcxproj Sun Dec 07 15:47:53 2025 +0100 +++ b/ui/winui/winui.vcxproj Sun Dec 07 15:50:20 2025 +0100 @@ -142,7 +142,7 @@ <ClInclude Include="..\ui\text.h" /> <ClInclude Include="..\ui\toolbar.h" /> <ClInclude Include="..\ui\toolkit.h" /> - <ClInclude Include="..\ui\tree.h" /> + <ClInclude Include="..\ui\list.h" /> <ClInclude Include="..\ui\ui.h" /> <ClInclude Include="..\ui\window.h" /> <ClInclude Include="appmenu.h" />
--- a/ui/winui/winui.vcxproj.filters Sun Dec 07 15:47:53 2025 +0100 +++ b/ui/winui/winui.vcxproj.filters Sun Dec 07 15:50:20 2025 +0100 @@ -108,7 +108,7 @@ <ClInclude Include="..\ui\toolkit.h"> <Filter>public</Filter> </ClInclude> - <ClInclude Include="..\ui\tree.h"> + <ClInclude Include="..\ui\list.h"> <Filter>public</Filter> </ClInclude> <ClInclude Include="..\ui\ui.h">