diff -urN cui58/etext.c cui59/etext.c --- cui58/etext.c Sun Feb 2 22:20:00 2014 +++ cui59/etext.c Sun Feb 2 22:30:00 2014 @@ -4,6 +4,7 @@ #include "key.h" #include #include +#include cui cui_etext_new(cui parent, int x, int y, int w, char *init_s) @@ -143,6 +144,34 @@ cui_free(pm); } +int +cui_etext_digit_menu_hdr(cui pm, int evt, int val, void *prm) +{ + cui obj = (cui)prm; + cui_etext p = (cui_etext)obj; + + p->buf[p->cursor] = *cui_menu_popup_str_get(pm); + cui_lblfix_str_set(p->lbf, p->buf); + cui_lblfix_str_set(p->lbf_shadow, p->buf); + return TRUE; +} + +void +cui_etext_digit_menu(cui obj) +{ + cui_etext p = (cui_etext)obj; + char *lst[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", NULL }; + cui pm; + + if(p->cursor >= p->n || !isdigit(p->buf[p->cursor])) return; + pm = cui_menu_popup_new(p->view_cursor, 0, 0, 0, lst, p->buf[p->cursor] - '0'); + cui_bind(pm, CUI_EVT_BUTTON, cui_etext_digit_menu_hdr, p); + cui_hide(pm); + cui_handler_call(pm, CUI_EVT_KEY, CUI_KEY_ENTER); + cui_del(pm); + cui_free(pm); +} + void cui_etext_edit_out(cui obj) { @@ -235,6 +264,7 @@ cui_etext_cursor_update(obj); break; case CUI_KEY_UP: + cui_etext_digit_menu(obj); break; case CUI_KEY_DOWN: cui_etext_hist_menu(obj);