diff -urN cui48/cui_test.c cui49/cui_test.c --- cui48/cui_test.c 2014-01-31 22:30:00.000000000 +0900 +++ cui49/cui_test.c 2014-01-31 22:40:00.000000000 +0900 @@ -163,6 +163,43 @@ return panel; } +int +mn_long_hdr(cui obj, int evt, int val, void *prm) +{ + cui menu = (cui)prm; + + if(menu){ /* menu_btn */ + cui_show(menu); + cui_main(menu, cui_index_to_child(menu, 0)); + cui_hide(menu); + cui_draw(menu->parent); + return TRUE; + } + /* prm == NULL (menu) */ + cui_quit(); + return TRUE; +} + +cui +mn_long_new(cui parent, int x, int y) +{ + cui mn_btn = cui_menu_btn_new(parent, x, y, "LONG"); + cui menu; + static char buf[20][16], *lst[21]; + int i; + + for(i=0; i<20; i++){ + lst[i] = buf[i]; + sprintf(lst[i], "cmd %d", i); + } + lst[20] = NULL; + menu = cui_menu_new(parent, mn_btn->x, mn_btn->y+1, lst); + menu->flags |= CUI_FLG_HIDE; + cui_bind(mn_btn, CUI_EVT_BUTTON, mn_long_hdr, menu); + cui_bind(menu, CUI_EVT_BUTTON, mn_long_hdr, NULL); + return mn_btn; +} + cui big_new(cui parent, int x, int y, cui_simple_dialog *res_dlg) { @@ -171,6 +208,7 @@ cui_simple_dialog p = (cui_simple_dialog)dlg; radio_new(base, cui_x2(dlg)+1, dlg->y); cui_simple_dialog_new(base, dlg->x, cui_y2(dlg), "How are you ?", "^_^", "T_T"); + mn_long_new(base, cui_x2(dlg)+1, cui_y2(dlg)+3); cui_wh_fit(base, base->children); cui_bind(p->btn1, CUI_EVT_BUTTON, my_hdr, p);