X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=ui%2Fncurses%2Fnc-config.c;h=9cc6a29085ff3e4b21b14d3bb11ed4ec689e6763;hp=6b29a660d43a4b6afd6b04cc0a576e0931a8fbe8;hb=445f43743b73fbd63cccba7fa7ae890c907fe6dd;hpb=b49d86901dcdf0a6ddddba7c90d67b62c4acf2f8 diff --git a/ui/ncurses/nc-config.c b/ui/ncurses/nc-config.c index 6b29a66..9cc6a29 100644 --- a/ui/ncurses/nc-config.c +++ b/ui/ncurses/nc-config.c @@ -131,6 +131,8 @@ static int config_screen_post(struct nc_scr *scr) struct config_screen *screen = config_screen_from_scr(scr); widgetset_post(screen->widgetset); nc_scr_frame_draw(scr); + redrawwin(scr->main_ncw); + wrefresh(screen->scr.main_ncw); pad_refresh(screen); return 0; } @@ -150,13 +152,13 @@ struct nc_scr *config_screen_scr(struct config_screen *screen) static int screen_process_form(struct config_screen *screen) { const struct system_info *sysinfo = screen->cui->sysinfo; - struct config *config = talloc_zero(screen, struct config); enum net_conf_type net_conf_type; struct interface_config *iface; + struct config *config; char *str, *end; int rc; - config_set_defaults(config); + config = config_copy(screen, screen->cui->config); config->autoboot_enabled = widget_checkbox_get_value(screen->widgets.autoboot_f); @@ -212,6 +214,7 @@ static int screen_process_form(struct config_screen *screen) screen->scr.frame.status = "No IP / mask values are set"; nc_scr_frame_draw(&screen->scr); + talloc_free(config); return -1; } @@ -579,8 +582,7 @@ static void config_screen_widget_focus(struct nc_widget *widget, void *arg) pad_refresh(screen); } - -void config_screen_update(struct config_screen *screen, +static void config_screen_draw(struct config_screen *screen, const struct config *config, const struct system_info *sysinfo) { @@ -625,7 +627,13 @@ void config_screen_update(struct config_screen *screen, if (repost) widgetset_post(screen->widgetset); +} +void config_screen_update(struct config_screen *screen, + const struct config *config, + const struct system_info *sysinfo) +{ + config_screen_draw(screen, config, sysinfo); pad_refresh(screen); } @@ -665,9 +673,7 @@ struct config_screen *config_screen_init(struct cui *cui, scrollok(screen->scr.sub_ncw, true); - config_screen_update(screen, config, sysinfo); - - wrefresh(screen->scr.main_ncw); + config_screen_draw(screen, config, sysinfo); return screen; }