fixes and improves tab navigation mechanism.
This commit is contained in:
+11
-6
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user