HelenOS sources
#ifndef _UI_PRIVATE_LIST_H
#define _UI_PRIVATE_LIST_H
#include <adt/list.h>
#include <gfx/color.h>
#include <gfx/coord.h>
#include <ipc/loc.h>
#include <ui/window.h>
#include <stdint.h>
#include <types/ui/list.h>
struct ui_list_entry {
struct ui_list *list;
link_t lentries;
char *caption;
void *arg;
gfx_color_t *color;
gfx_color_t *bgcolor;
};
typedef struct ui_list {
struct ui_control *control;
ui_window_t *window;
struct ui_list_cb *cb;
void *cb_arg;
gfx_rect_t rect;
struct ui_scrollbar *scrollbar;
list_t entries;
size_t entries_cnt;
ui_list_entry_t *page;
size_t page_idx;
ui_list_entry_t *cursor;
size_t cursor_idx;
bool active;
} ui_list_t;
extern gfx_coord_t ui_list_entry_height(ui_list_t *);
extern errno_t ui_list_entry_paint(ui_list_entry_t *, size_t);
extern errno_t ui_list_paint(ui_list_t *);
extern ui_evclaim_t ui_list_kbd_event(ui_list_t *, kbd_event_t *);
extern ui_evclaim_t ui_list_pos_event(ui_list_t *, pos_event_t *);
extern unsigned ui_list_page_size(ui_list_t *);
extern void ui_list_inside_rect(ui_list_t *, gfx_rect_t *);
extern void ui_list_scrollbar_rect(ui_list_t *, gfx_rect_t *);
extern gfx_coord_t ui_list_scrollbar_pos(ui_list_t *);
extern void ui_list_scrollbar_update(ui_list_t *);
extern void ui_list_clear_entries(ui_list_t *);
extern ui_list_entry_t *ui_list_page_nth_entry(ui_list_t *,
size_t, size_t *);
extern void ui_list_cursor_move(ui_list_t *, ui_list_entry_t *,
size_t);
extern void ui_list_cursor_up(ui_list_t *);
extern void ui_list_cursor_down(ui_list_t *);
extern void ui_list_cursor_top(ui_list_t *);
extern void ui_list_cursor_bottom(ui_list_t *);
extern void ui_list_page_up(ui_list_t *);
extern void ui_list_page_down(ui_list_t *);
extern void ui_list_scroll_up(ui_list_t *);
extern void ui_list_scroll_down(ui_list_t *);
extern void ui_list_scroll_page_up(ui_list_t *);
extern void ui_list_scroll_page_down(ui_list_t *);
extern void ui_list_scroll_pos(ui_list_t *, size_t);
extern void ui_list_activate_req(ui_list_t *);
extern void ui_list_selected(ui_list_entry_t *);
extern int ui_list_entry_ptr_cmp(const void *, const void *);
extern size_t ui_list_entry_get_idx(ui_list_entry_t *);
extern void ui_list_entry_destroy(ui_list_entry_t *);
#endif
HelenOS homepage, sources at GitHub