--- a/ui/common/toolbar.c Sun Nov 26 15:44:28 2023 +0100 +++ b/ui/common/toolbar.c Tue Jan 16 12:49:46 2024 +0100 @@ -32,14 +32,15 @@ static CxMap* toolbar_items; -static CxList* toolbar_defaults; +static CxList* toolbar_defaults[3]; // 0: left 1: center 2: right static UiToolbarMenuItem* ui_appmenu; - void uic_toolbar_init(void) { toolbar_items = cxHashMapCreate(cxDefaultAllocator, CX_STORE_POINTERS, 16); - toolbar_defaults = cxLinkedListCreateSimple(CX_STORE_POINTERS); + toolbar_defaults[0] = cxLinkedListCreateSimple(CX_STORE_POINTERS); + toolbar_defaults[1] = cxLinkedListCreateSimple(CX_STORE_POINTERS); + toolbar_defaults[2] = cxLinkedListCreateSimple(CX_STORE_POINTERS); } static char* nl_strdup(char* str) { @@ -114,17 +115,24 @@ return toolbar_items; } -CxList* uic_get_toolbar_defaults(void) { - return toolbar_defaults; +CxList* uic_get_toolbar_defaults(enum UiToolbarPos pos) { + if (pos >= 0 && pos < 3) { + return toolbar_defaults[pos]; + } } -void ui_toolbar_add_default(const char* name) { +void ui_toolbar_add_default(const char* name, enum UiToolbarPos pos) { char* cp = strdup(name); - cxListAdd(toolbar_defaults, cp); + if (pos >= 0 && pos < 3) { + cxListAdd(toolbar_defaults[pos], cp); + } + else { + // TODO: error + } } UiBool uic_toolbar_isenabled(void) { - return toolbar_defaults->size > 0; + return toolbar_defaults[0]->size + toolbar_defaults[1]->size + toolbar_defaults[2]->size > 0; } UiToolbarItemI* uic_toolbar_get_item(const char* name) {