X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ui%2Fncurses%2Fnc-cui.c;h=d091331b9656ce1a5635f08b73d64fd5b0e5fcbc;hb=a3de0330fd61eca35cfe360dbb4ea266223f387e;hp=342b60342ad5adc5b39f540ce89f79e096782240;hpb=488fa97839822949f855de1efa3cf47756b7f72b;p=petitboot diff --git a/ui/ncurses/nc-cui.c b/ui/ncurses/nc-cui.c index 342b603..d091331 100644 --- a/ui/ncurses/nc-cui.c +++ b/ui/ncurses/nc-cui.c @@ -109,6 +109,11 @@ static int cui_boot(struct pmenu_item *item) assert(cui->current == &cui->main->scr); pb_log("%s: %s\n", __func__, cod->name); + if (!cod->opt) { + pb_log("%s: missing opt?\n", __func__); + return -1; + } + nc_scr_status_printf(cui->current, "Booting %s...", cod->name); def_prog_mode(); @@ -194,6 +199,19 @@ struct nc_scr *cui_set_current(struct cui *cui, struct nc_scr *scr) return old; } +static bool process_global_keys(struct cui *cui, int key) +{ + switch (key) { + case 0xc: + if (cui->current && cui->current->main_ncw) { + redrawwin(cui->current->main_ncw); + wrefresh(cui->current->main_ncw); + } + return true; + } + return false; +} + /** * cui_process_key - Process input on stdin. */ @@ -205,7 +223,17 @@ static int cui_process_key(void *arg) assert(cui->current); ui_timer_disable(&cui->timer); - cui->current->process_key(cui->current); + for (;;) { + int c = getch(); + + if (c == ERR) + break; + + if (process_global_keys(cui, c)) + continue; + + cui->current->process_key(cui->current, c); + } return 0; }