diff options
| author | 2023-11-24 04:58:20 -0600 | |
|---|---|---|
| committer | 2023-11-24 04:58:20 -0600 | |
| commit | cb32a721d811caf450f3c55cfb419559d84fa891 (patch) | |
| tree | 4967bee504cfee63c94fe0b7e7e93566071ffbf0 /src/ui/ui.internal.h | |
| parent | add some menu test code (diff) | |
not every UI window maps to a curses window
Diffstat (limited to 'src/ui/ui.internal.h')
| -rw-r--r-- | src/ui/ui.internal.h | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/ui/ui.internal.h b/src/ui/ui.internal.h index 161391f..946d57a 100644 --- a/src/ui/ui.internal.h +++ b/src/ui/ui.internal.h @@ -17,8 +17,9 @@ #define UI__WINDOW_FOCUS_NONE (999u) #define UI__WINDOW_TYPE_BASE (0u) -#define UI__WINDOW_TYPE_DOCK (1u) -#define UI__WINDOW_TYPE_ROOT (2u) +#define UI__WINDOW_TYPE_LEAF (1u) +#define UI__WINDOW_TYPE_DOCK (2u) +#define UI__WINDOW_TYPE_ROOT (3u) #define UI__WINDOW_DOCK_MAX UI__WINDOW_DOCK_CENTER+1 @@ -28,6 +29,7 @@ #define ui__cast(_t, _v) (ui__check_cast_to_ ## _t(_v)) struct ui_window_base *ui__check_cast_to_base(void *); +struct ui_window_leaf *ui__check_cast_to_leaf(void *); struct ui_window_dock *ui__check_cast_to_dock(void *); struct ui_window_root *ui__check_cast_to_root(void *); #endif @@ -43,12 +45,21 @@ typedef void (ui__layout_proc)(struct ui_window_base *); struct ui_window_base { unsigned type; struct ui_window_base *parent; /* the parent of a window manages its memory */ - WINDOW *cwindow; /* ncurses window */ + struct ui_dims { + int maxy, maxx; + int begy, begx; + } dims; ui__draw_proc *draw_proc; ui__layout_proc *layout_proc; }; +struct ui_window_leaf { + struct ui_window_base super; + + WINDOW *cwindow; +}; + struct ui_window_dock { struct ui_window_base super; @@ -60,6 +71,8 @@ struct ui_window_dock { struct ui_window_root { struct ui_window_base super; + WINDOW *cwindow; + bool undersize_scr; struct ui_window_base *content; @@ -72,6 +85,7 @@ struct ui_window_root { /* in-place constructors */ void ui__init_window_base(struct ui_window_base *); +void ui__init_window_leaf(struct ui_window_leaf *); void ui__init_window_dock(struct ui_window_dock *); void ui__init_window_root(struct ui_window_root *, WINDOW *); |
