diff -urN cui28/button.c cui29/button.c --- cui28/button.c Thu Jan 30 23:50:00 2014 +++ cui29/button.c Fri Jan 31 00:10:00 2014 @@ -65,12 +65,9 @@ cui_button_str_set(cui obj, char *s) { cui_button p = (cui_button)obj; - int visi = cui_is_visible(obj); - if(visi) cui_hide(obj); cui_label_str_set(p->lb2, s); - p->lb3->x = p->lb1->w + p->lb2->w; - obj->w = p->lb3->x + p->lb3->w; - if(visi) cui_show(obj); + cui_x_set(p->lb3, p->lb1->w + p->lb2->w); + cui_w_set(obj, p->lb3->x + p->lb3->w); } /* EOF */ diff -urN cui28/cui.c cui29/cui.c --- cui28/cui.c Fri Jan 31 00:00:00 2014 +++ cui29/cui.c Fri Jan 31 00:10:00 2014 @@ -76,7 +76,7 @@ } x = r2->x; cui_esc_loc(cui_gx(obj) + x, cui_gy(obj) + y); - cui_esc_attr(attr); + if(attr != CUI_ESC_NORMAL) cui_esc_attr(attr); printf("%s", s); if(attr != CUI_ESC_NORMAL) cui_esc_attr(CUI_ESC_NORMAL); fflush(stdout); @@ -260,6 +260,30 @@ t->x -= obj->x; t->y -= obj->y; return cui_rect_and(r, t, r); /* r and t --> r */ +} + +void +cui_xywh_set(cui obj, int x, int y, int w, int h) +{ + int visi = cui_is_visible(obj); + if(visi) cui_hide(obj); + obj->x = x; + obj->y = y; + obj->w = w; + obj->h = h; + if(visi) cui_show(obj); +} + +void +cui_x_set(cui obj, int x) +{ + cui_xywh_set(obj, x, obj->y, obj->w, obj->h); +} + +void +cui_w_set(cui obj, int w) +{ + cui_xywh_set(obj, obj->x, obj->y, w, obj->h); } void diff -urN cui28/cui.h cui29/cui.h --- cui28/cui.h Thu Jan 30 23:00:00 2014 +++ cui29/cui.h Fri Jan 31 00:10:00 2014 @@ -49,6 +49,9 @@ void cui_show(cui obj); int cui_is_visible(cui obj); int cui_visible_rect(cui obj, cui_rect r); +void cui_xywh_set(cui obj, int x, int y, int w, int h); +void cui_x_set(cui obj, int x); +void cui_w_set(cui obj, int w); void cui_quit(void); void cui_main(cui top_obj);