diff -urN cui63/cui_test.c cui64/cui_test.c --- cui63/cui_test.c Mon Feb 3 01:00:00 2014 +++ cui64/cui_test.c Fri Feb 7 22:00:00 2014 @@ -157,7 +157,6 @@ cui_wh_fit(panel); panel->w += 1; panel->h += 1; - cui_panel_adj(panel); cui_bind(rd_on, CUI_EVT_BUTTON, radio_hdr, base); cui_bind(rd_off, CUI_EVT_BUTTON, radio_hdr, base); @@ -297,6 +296,7 @@ cui lb_bar = cui_label_new(bs_bar, 1, 1, "bar"); cui sc = cui_scbar_new(bs_bar, 1, 2, 20, 1, 30, 15); cui sc2 = cui_scbar_new(bs_bar, 1, 3, 20, 1, 10, 0); + cui sc3 = cui_scbar_new(bs_bar, cui_x2(sc)+2, sc->y, 1, 16, 4, 2); cui lb_hoge = cui_label_new(bs, 4, 4, "hoge sheet"); cui base = cui_panel_new(bs, 1, 2, 40, 20); cui mn_btn = cui_menu_btn_new(base, 1, 1, "File"); @@ -310,6 +310,8 @@ cui small2 = cui_base_new(small, 1, 1, small->w - 2, small->h - 2); cui big = big_new(small2, 0, 0, &p); + cui tab_sheets[] = { base, bs_bar, lb_hoge }; + arrow_new(base, cui_x2(mv_lb) + 2, mv_lb->y, big); cui_hide(small); @@ -322,9 +324,10 @@ cui_wh_fit(bs_bar); cui_bind(sc, CUI_EVT_BUTTON, sc_hdr, lb_bar); cui_bind(sc2, CUI_EVT_BUTTON, sc_hdr, lb_bar); + cui_bind(sc3, CUI_EVT_BUTTON, sc_hdr, lb_bar); cui_hide(lb_hoge); - cui_tab_new(bs, 1, 1, -1, (char *[]){"foo", "bar", "hoge", NULL}, (cui []){base, bs_bar, lb_hoge}, 0); + cui_tab_new(bs, 1, 1, -1, (char *[]){"foo", "bar", "hoge", NULL}, tab_sheets, 0); cui_main(bs, NULL); printf("result %s\n", p->btn_result); diff -urN cui63/fillbtn.c cui64/fillbtn.c --- cui63/fillbtn.c Mon Feb 3 01:00:00 2014 +++ cui64/fillbtn.c Fri Feb 7 22:00:00 2014 @@ -32,6 +32,7 @@ case CUI_EVT_DRAW: attr = p->v ? CUI_ATTR_REVERSE : (val == CUI_DRAW_FOCUS ? CUI_ATTR_ULINE : CUI_ATTR_NORMAL); cui_fill_attr_set(p->fill, attr); + if(obj->w != p->fill->w || obj->h != p->fill->h) cui_wh_set(p->fill, obj->w, obj->h); return TRUE; case CUI_EVT_KEY: if(val != CUI_KEY_ENTER) break; @@ -43,28 +44,6 @@ return TRUE; } return FALSE; -} - -void -cui_fillbtn_wh_set(cui obj, int w, int h) -{ - cui_fillbtn p = (cui_fillbtn)obj; - int bak = cui_hide_enter(obj); - cui_wh_set(obj, w, h); - cui_wh_set(p->fill, w, h); - cui_hide_exit(obj, bak); -} - -void -cui_fillbtn_w_set(cui obj, int w) -{ - cui_fillbtn_wh_set(obj, w, obj->h); -} - -void -cui_fillbtn_h_set(cui obj, int h) -{ - cui_fillbtn_wh_set(obj, obj->w, h); } /* EOF */ diff -urN cui63/fillbtn.h cui64/fillbtn.h --- cui63/fillbtn.h Mon Feb 3 01:00:00 2014 +++ cui64/fillbtn.h Fri Feb 7 22:00:00 2014 @@ -14,8 +14,4 @@ void cui_fillbtn_init(cui obj, cui parent, int x, int y, int w, int h, char *s); int cui_fillbtn_hdr(cui obj, int evt, int val, void *prm); -void cui_fillbtn_wh_set(cui obj, int w, int h); -void cui_fillbtn_w_set(cui obj, int w); -void cui_fillbtn_h_set(cui obj, int h); - #endif diff -urN cui63/panel.c cui64/panel.c --- cui63/panel.c Sat Feb 1 02:00:00 2014 +++ cui64/panel.c Fri Feb 7 22:00:00 2014 @@ -1,5 +1,7 @@ #include "panel.h" #include "fill.h" +#include "handler.h" +#include cui cui_panel_new(cui parent, int x, int y, int w, int h) @@ -22,23 +24,47 @@ p->fill[5] = cui_fill_new(obj, 0, 0, 0, 0, "+", CUI_ATTR_NORMAL); p->fill[6] = cui_fill_new(obj, 0, 0, 0, 0, "+", CUI_ATTR_NORMAL); p->fill[7] = cui_fill_new(obj, 0, 0, 0, 0, "+", CUI_ATTR_NORMAL); - cui_panel_adj(obj); + cui_bind(obj, CUI_EVT_DRAW, cui_panel_hdr, NULL); } -void -cui_panel_adj(cui obj) +int +cui_panel_hdr(cui obj, int evt, int val, void *prm) { + /* evt == CUI_EVT_DRAW */ cui_panel p = (cui_panel)obj; - int bak = cui_hide_enter(obj); + int bak; + + bak = cui_hide_enter(p->fill[0]); cui_xywh_set(p->fill[0], 1, 0, obj->w-2, 1); + cui_hide_exit(p->fill[0], bak); + + bak = cui_hide_enter(p->fill[1]); cui_xywh_set(p->fill[1], 1, obj->h-1, obj->w-2, 1); + cui_hide_exit(p->fill[1], bak); + + bak = cui_hide_enter(p->fill[2]); cui_xywh_set(p->fill[2], 0, 1, 1, obj->h-2); + cui_hide_exit(p->fill[2], bak); + + bak = cui_hide_enter(p->fill[3]); cui_xywh_set(p->fill[3], obj->w-1, 1, 1, obj->h-2); + cui_hide_exit(p->fill[3], bak); + + bak = cui_hide_enter(p->fill[4]); cui_xywh_set(p->fill[4], 0, 0, 1, 1); + cui_hide_exit(p->fill[4], bak); + + bak = cui_hide_enter(p->fill[5]); cui_xywh_set(p->fill[5], obj->w-1, 0, 1, 1); + cui_hide_exit(p->fill[5], bak); + + bak = cui_hide_enter(p->fill[6]); cui_xywh_set(p->fill[6], obj->w-1, obj->h-1, 1, 1); + cui_hide_exit(p->fill[6], bak); + bak = cui_hide_enter(p->fill[7]); cui_xywh_set(p->fill[7], 0, obj->h-1, 1, 1); - cui_hide_exit(obj, bak); + cui_hide_exit(p->fill[7], bak); + return TRUE; } /* EOF */ diff -urN cui63/panel.h cui64/panel.h --- cui63/panel.h Fri Jan 31 22:00:00 2014 +++ cui64/panel.h Fri Feb 7 22:00:00 2014 @@ -10,6 +10,6 @@ cui cui_panel_new(cui parent, int x, int y, int w, int h); void cui_panel_init(cui obj, cui parent, int x, int y, int w, int h); -void cui_panel_adj(cui obj); +int cui_panel_hdr(cui obj, int evt, int val, void *prm); #endif diff -urN cui63/scbar.c cui64/scbar.c --- cui63/scbar.c Mon Feb 3 01:00:00 2014 +++ cui64/scbar.c Fri Feb 7 22:00:00 2014 @@ -119,22 +119,40 @@ if(p->hv == CUI_SCBAR_H){ bak = cui_hide_enter(p->dec_pg); - cui_fillbtn_w_set(p->dec_pg, pos); + cui_w_set(p->dec_pg, pos); cui_hide_exit(p->dec_pg, bak); bak = cui_hide_enter(p->thumb); cui_x_set(p->thumb, cui_x2(p->dec_pg)); - cui_fillbtn_w_set(p->thumb, len); + cui_w_set(p->thumb, len); cui_hide_exit(p->thumb, bak); bak = cui_hide_enter(p->inc_pg); cui_x_set(p->inc_pg, cui_x2(p->thumb)); - cui_fillbtn_w_set(p->inc_pg, obj->w-1 - cui_x2(p->thumb)); + cui_w_set(p->inc_pg, obj->w-1 - cui_x2(p->thumb)); cui_hide_exit(p->inc_pg, bak); + bak = cui_hide_enter(p->inc); cui_x_set(p->inc, obj->w-1); + cui_hide_exit(p->inc, bak); }else{ + bak = cui_hide_enter(p->dec_pg); + cui_h_set(p->dec_pg, pos); + cui_hide_exit(p->dec_pg, bak); + + bak = cui_hide_enter(p->thumb); + cui_y_set(p->thumb, cui_y2(p->dec_pg)); + cui_h_set(p->thumb, len); + cui_hide_exit(p->thumb, bak); + + bak = cui_hide_enter(p->inc_pg); + cui_y_set(p->inc_pg, cui_y2(p->thumb)); + cui_h_set(p->inc_pg, obj->h-1 - cui_y2(p->thumb)); + cui_hide_exit(p->inc_pg, bak); + bak = cui_hide_enter(p->inc); + cui_y_set(p->inc, obj->h-1); + cui_hide_exit(p->inc, bak); } return TRUE; }