ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
selectable_list.h File Reference

Go to the source code of this file.

Data Structures

struct  ui_selectable_list_t
 ui selectable list keeps the values that move through the subsystem: selected, first_visible. Some members are pointers into caller- or subsystem-owned memory, so lifetime follows the API that populated them rather than the struct copy itself. More...

Functions

void ui_selectable_list_reset (ui_selectable_list_t *list)
void ui_selectable_list_move (ui_selectable_list_t *list, int count, int rows, int delta)
void ui_selectable_list_keep_visible (ui_selectable_list_t *list, int count, int rows)

Function Documentation

◆ ui_selectable_list_keep_visible()

void ui_selectable_list_keep_visible ( ui_selectable_list_t * list,
int count,
int rows )

Definition at line 9 of file selectable_list.c.

9 {
10 if (!list)
11 return;
12 ui_viewport_t viewport = {.selected = list->selected > 0 ? (size_t)list->selected : 0,
13 .first_visible = list->first_visible > 0 ? (size_t)list->first_visible : 0};
14 ui_viewport_update(&viewport, count > 0 ? (size_t)count : 0, rows > 0 ? (size_t)rows : 1);
15 list->selected = (int)viewport.selected;
16 list->first_visible = (int)viewport.first_visible;
17}
For ui viewport, this is the live record that ties selected, first_visible, page_size together....
Definition viewport.h:10
size_t first_visible
Definition viewport.h:11
size_t selected
Definition viewport.h:11
ui_viewport_range_t ui_viewport_update(ui_viewport_t *v, size_t count, size_t rows)
Definition viewport.c:4

References ui_selectable_list_t::first_visible, ui_viewport_t::first_visible, ui_selectable_list_t::selected, ui_viewport_t::selected, and ui_viewport_update().

Referenced by ui_selectable_list_move().

◆ ui_selectable_list_move()

void ui_selectable_list_move ( ui_selectable_list_t * list,
int count,
int rows,
int delta )

Definition at line 19 of file selectable_list.c.

19 {
20 if (!list || count <= 0)
21 return;
22 list->selected += delta;
23 ui_selectable_list_keep_visible(list, count, rows);
24}
void ui_selectable_list_keep_visible(ui_selectable_list_t *list, int count, int rows)

References ui_selectable_list_t::selected, and ui_selectable_list_keep_visible().

Referenced by ui_errno_stacks_handle_key().

◆ ui_selectable_list_reset()

void ui_selectable_list_reset ( ui_selectable_list_t * list)

Definition at line 4 of file selectable_list.c.

4 {
5 if (list)
6 *list = (ui_selectable_list_t){0};
7}
ui selectable list keeps the values that move through the subsystem: selected, first_visible....

Referenced by ui_errno_stacks_handle_key(), and ui_errno_stacks_toggle().