From d81c406f62e996840d86333b81c41d0ae4aff347 Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Sat, 7 Dec 2024 23:47:36 -0500 Subject: Synced list reference 1 This marks a point where the list behavior is at least moderately robust for the skip operation. It includes fixes for multiple deep-rooted issues found by testing with input simulation. Signed-off-by: Andrew Opalach --- src/fruits/cmc/ui/ui.c | 29 +++++++++++++++++++++++++++++ src/fruits/cmc/ui/ui.h | 18 ++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 src/fruits/cmc/ui/ui.c create mode 100644 src/fruits/cmc/ui/ui.h (limited to 'src/fruits/cmc/ui') diff --git a/src/fruits/cmc/ui/ui.c b/src/fruits/cmc/ui/ui.c new file mode 100644 index 0000000..a838f96 --- /dev/null +++ b/src/fruits/cmc/ui/ui.c @@ -0,0 +1,29 @@ +#include + +#include "ui.h" + +bool cmc_ui_init(struct cmc_ui *ui) +{ + al_memset(ui, 0, sizeof(struct cmc_ui)); + if (!(ui->nc = notcurses_init(NULL, stdin))) { + return false; + } + return true; +} + +s32 cmc_ui_get_input_fd(struct cmc_ui *ui) +{ + return notcurses_inputready_fd(ui->nc); +} + +bool cmc_ui_read_input(struct cmc_ui *ui, struct ncinput *input) +{ + al_memset(input, 0, sizeof(struct ncinput)); + u32 ret = notcurses_get_nblock(ui->nc, input); + return !(ret == (u32)-1 || ret == 0); +} + +void cmc_ui_close(struct cmc_ui *ui) +{ + notcurses_stop(ui->nc); +} diff --git a/src/fruits/cmc/ui/ui.h b/src/fruits/cmc/ui/ui.h new file mode 100644 index 0000000..4af222e --- /dev/null +++ b/src/fruits/cmc/ui/ui.h @@ -0,0 +1,18 @@ +#pragma once + +#include +#include + +struct cmc_ui { + struct notcurses *nc; + u32 term_cols; + u32 term_rows; + bool pending_layout; +}; + +bool cmc_ui_init(struct cmc_ui *ui); + +s32 cmc_ui_get_input_fd(struct cmc_ui *ui); +bool cmc_ui_read_input(struct cmc_ui *ui, struct ncinput *input); + +void cmc_ui_close(struct cmc_ui *ui); -- cgit v1.2.3-101-g0448