diff -urN cui134/panel.c cui135/panel.c --- cui134/panel.c Sun Feb 9 00:00:00 2014 +++ cui135/panel.c Sun Apr 27 22:00:00 2014 @@ -45,4 +45,58 @@ return TRUE; } +/**/ + +cui +cui_title_panel_new(cui parent, int x, int y, int w, int h, char *s) +{ + cui obj = cui_alloc(sizeof(struct cui_title_panel)); + cui_title_panel_init(obj, parent, x, y, w, h, s); + return obj; +} + +void +cui_title_panel_init(cui obj, cui parent, int x, int y, int w, int h, char *s) +{ + cui_title_panel p = (cui_title_panel)obj; + + cui_panel_init(obj, parent, x, y, w, h); + p->lb = cui_label_new(obj, 3, 0, s); + p->sheet = cui_base_new(obj, 1, 1, w-2, h-2); + cui_bind(obj, CUI_EVT_RESIZE, cui_title_panel_hdr, obj); + cui_bind(p->sheet, CUI_EVT_RESIZE, cui_title_panel_hdr, obj); +} + +int +cui_title_panel_hdr(cui ev_obj, int evt, int val, void *prm) +{ + /* CUI_EVT_RESIZE */ + + cui obj = (cui)prm; + cui_title_panel p = (cui_title_panel)obj; + cui sheet = p->sheet; + + if(ev_obj == obj){ + if(sheet->w != obj->w-2 || sheet->h != obj->h-2) cui_wh_set(sheet, obj->w-2, obj->h-2); + return FALSE; /* for cui_panel_hdr() */ + }else if(ev_obj == sheet){ + if(obj->w != sheet->w+2 || obj->h != sheet->h+2) cui_wh_set(obj, sheet->w+2, sheet->h+2); + }else return FALSE; + return TRUE; +} + +cui +cui_title_panel_sheet_get(cui obj) +{ + cui_title_panel p = (cui_title_panel)obj; + return p->sheet; +} + +cui +cui_title_panel_new_sheet(cui parent, int x, int y, int w, int h, char *s) +{ + return cui_title_panel_sheet_get( + cui_title_panel_new(parent, x, y, w, h, s)); +} + /* EOF */ diff -urN cui134/panel.h cui135/panel.h --- cui134/panel.h Fri Feb 7 22:00:00 2014 +++ cui135/panel.h Sun Apr 27 22:00:00 2014 @@ -8,8 +8,19 @@ cui fill[8]; } *cui_panel; +typedef struct cui_title_panel{ + struct cui_panel panel; + cui lb, sheet; +} *cui_title_panel; + 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); int cui_panel_hdr(cui obj, int evt, int val, void *prm); + +cui cui_title_panel_new(cui parent, int x, int y, int w, int h, char *s); +void cui_title_panel_init(cui obj, cui parent, int x, int y, int w, int h, char *s); +int cui_title_panel_hdr(cui obj, int evt, int val, void *prm); +cui cui_title_panel_sheet_get(cui obj); +cui cui_title_panel_new_sheet(cui parent, int x, int y, int w, int h, char *s); #endif diff -urN cui134/scpanel.c cui135/scpanel.c --- cui134/scpanel.c Wed Apr 23 22:10:00 2014 +++ cui135/scpanel.c Sun Apr 27 22:00:00 2014 @@ -81,6 +81,9 @@ cui_xywh_set(p->hbar, 1, obj->h-1, obj->w-2, 1); if(p->tbar && obj->w != p->tbar->w) cui_w_set(p->tbar, obj->w); scbar_update(obj); + if(p->rszbox->x != obj->w-1 || p->rszbox->y != obj->h-1){ + cui_xy_set(p->rszbox, obj->w-1, obj->h-1); + } return FALSE; }