fixes and improves tab navigation mechanism.

This commit is contained in:
2025-12-11 17:55:52 +02:00
parent d2e5bddbcb
commit 4395e11843
17 changed files with 180 additions and 149 deletions
+11 -6
View File
@@ -13,10 +13,12 @@ typedef struct {
uint32_t id;
void *element;
enum w_type type;
uint32_t is_default : 1;
} group_el_t;
typedef struct {
enum w_type type;
uint32_t is_default : 1;
char label[DIALOGUE_TITLE];
uint32_t length;
} group_el_init_t;
@@ -24,20 +26,23 @@ typedef struct {
typedef struct {
widget_t w;
group_el_t *elements;
uint32_t active_id; // TODO: needs to be removed
enum g_direction direction;
uint32_t count;
uint32_t first_id, last_id;
} group_t;
typedef struct {
int32_t value;
uint32_t active_id;
} group_resp_t;
#define FIND_ACTIVE_ELEMENT(g, active_id, element_ptr, element_idx) \
for (int i = 0; i < g->count; i++) { \
if (g->elements[i].id == active_id) { \
element_ptr = &(g->elements[i]); \
element_idx = i; \
break; \
} \
}
group_t *init_group(WINDOW **win, widget_t *w_parent, group_el_init_t *children,
enum g_direction dir);
void draw_group(WINDOW *win, group_t *group, int32_t active_id);
void draw_group(WINDOW *win, group_t *group, int32_t active_id, widget_t *dialog_w);
void destroy_group(group_t *group);
void group_default_callback(callback_args_t *args);