diff -urN cui109/cui.c cui110/cui.c --- cui109/cui.c Sun Apr 13 22:00:00 2014 +++ cui110/cui.c Mon Apr 14 00:00:00 2014 @@ -86,7 +86,8 @@ srv_accept(cui obj) { struct sockaddr_in caddr; - int clen = sizeof(caddr), cfd; + socklen_t clen = sizeof(caddr); + int cfd; if(sfd == -1 || !cui_select_chk(sfd)) return; diff -urN cui109/cui_test.c cui110/cui_test.c --- cui109/cui_test.c Sat Apr 12 23:00:00 2014 +++ cui110/cui_test.c Mon Apr 14 00:00:00 2014 @@ -379,6 +379,31 @@ } int +tab_test_btn_hdr(cui obj, int evt, int val, void *prm) +{ + /* CUI_EVT_BUTTON */ + + cui bs = (cui)prm; + cui ck = cui_index_to_child(bs, 1); + cui tab_test = cui_index_to_child(bs, 2); + + static int cnt = 0; + char buf[16]; + cui parent = tab_test->parent; + int y = cui_y2(tab_test); + cui sheet = cui_base_new(parent, 0, y, 0, 0); + + cui_hide(sheet); + cui_wh_set(sheet, parent->w, parent->h-y); + + sprintf(buf, "%d", cnt++); + cui_label_new(sheet, 1, 1, strdup(buf)); + + cui_tab_add(tab_test, strdup(buf), sheet, cui_ckbox_val_get(ck)); + return TRUE; +} + +int main(int ac, char **av) { int init_ret = cui_init(ac, av); @@ -406,6 +431,10 @@ cui lb_num = cui_label_new(bs_num, 1, 13, ""); cui btn_num = cui_button_new(bs_num, 1, 15, "addr set"); cui num_arr[] = { num2, num_d2, mn_int1 }; + + cui bs_tab_test = cui_base_new(bs_view, 0, 1, bs_view->w, bs_view->h-1); + cui tab_test_btn = cui_button_new(bs_tab_test, 0, 1, "add"); + cui base = cui_base_new(bs_view, 0, 1, 40, 20); cui mn_btn = cui_menu_btn_new(base, 1, 1, "File"); cui etx = cui_etext_new(base, mn_btn->x, cui_y2(mn_btn), 8, "foo"); @@ -417,8 +446,8 @@ cui small = cui_scpanel_new(base, 2, 3, base->w - (2 * 2), base->h - (3 + 1), "title"); cui small2 = cui_scpanel_sheet_get(small); - cui tab_sheets[] = { base, bs_bar, sc_hoge, bs_term, bs_timer, bs_num }; - cui tab = cui_tab_new(bs_view, 0, 0, -1, (char *[]){"foo", "bar", "hoge", "term", "timer", "num", NULL}, tab_sheets, 0); + cui tab_sheets[] = { base, bs_bar, sc_hoge, bs_term, bs_timer, bs_num, bs_tab_test }; + cui tab = cui_tab_new(bs_view, 0, 0, -1, (char *[]){"foo", "bar", "hoge", "term", "timer", "num", "tab test", NULL}, tab_sheets, 0); char lb_timer1_buf[16]; big_new(small2, 0, 0, &p); @@ -465,6 +494,11 @@ cui_bind(mn_int1, CUI_EVT_BUTTON, mn_int_hdr, lb_num); cui_bind(btn_num, CUI_EVT_BUTTON, btn_num_hdr, num_arr); cui_wh_exp(bs_num); + + cui_hide(bs_tab_test); + cui_ckbox_new(bs_tab_test, cui_x2(tab_test_btn)+2, tab_test_btn->y, "init_act", TRUE); + cui_tab_new(bs_tab_test, 0, cui_y2(tab_test_btn)+1, 0, NULL, NULL, 0); + cui_bind(tab_test_btn, CUI_EVT_BUTTON, tab_test_btn_hdr, bs_tab_test); cui_wh_set(bs_view, cui_x2(tab), bs_view->h); cui_wh_set(bs, cui_x2(bs_view)+1, cui_y2(bs_view)+1); diff -urN cui109/tab.c cui110/tab.c --- cui109/tab.c Fri Apr 11 00:00:00 2014 +++ cui110/tab.c Mon Apr 14 00:00:00 2014 @@ -1,5 +1,6 @@ #include "tab.h" #include "handler.h" +#include "key.h" #include cui @@ -95,10 +96,16 @@ } void -cui_tab_add(cui obj, char *s, cui sheet) +cui_tab_add(cui obj, char *s, cui sheet, int v) { - cui btn = cui_tab_btn_new(obj, cui_x2(obj->children), 0, s, 0); + int first = !obj->children; + int x = first ? 0 : cui_x2(obj->children); + cui btn = cui_tab_btn_new(obj, x, 0, s, first); cui_bind(btn, CUI_EVT_BUTTON, cui_tab_btn_hdr, sheet); + cui_wh_fit(obj); + cui_draw(obj); + if(first) cui_show(sheet); + else if(v) cui_handler_call(btn, CUI_EVT_KEY, CUI_KEY_ENTER); } /* EOF */ diff -urN cui109/tab.h cui110/tab.h --- cui109/tab.h Sun Feb 2 23:50:00 2014 +++ cui110/tab.h Mon Apr 14 00:00:00 2014 @@ -20,6 +20,6 @@ cui cui_tab_new(cui parent, int x, int y, int w, char **lst, cui *sheets, int v); void cui_tab_init(cui obj, cui parent, int x, int y, int w, char **lst, cui *sheets, int v); -void cui_tab_add(cui obj, char *s, cui sheet); +void cui_tab_add(cui obj, char *s, cui sheet, int v); #endif