]> git.ozlabs.org Git - petitboot/blobdiff - ui/ncurses/nc-config.c
discover/device-handler: Ensure we free unresolved boot options on remove
[petitboot] / ui / ncurses / nc-config.c
index ee68a6fe622d4d822dc01eb661002fdb07581bc0..4eeeff830aed783a67874bebab16f32a8ba047ed 100644 (file)
@@ -535,17 +535,16 @@ static void config_screen_setup_widgets(struct config_screen *screen,
 static void config_screen_widget_focus(struct nc_widget *widget, void *arg)
 {
        struct config_screen *screen = arg;
-       int w_y, w_height, s_max;
+       int w_y, s_max;
 
-       w_y = widget_y(widget);
-       w_height = widget_height(widget);
-       s_max = getmaxy(screen->scr.sub_ncw);
+       w_y = widget_y(widget) + widget_focus_y(widget);
+       s_max = getmaxy(screen->scr.sub_ncw) - 1;
 
        if (w_y < screen->scroll_y)
                screen->scroll_y = w_y;
 
-       else if (w_y + w_height + screen->scroll_y > s_max - 1)
-               screen->scroll_y = 1 + w_y + w_height - s_max;
+       else if (w_y + screen->scroll_y + 1 > s_max)
+               screen->scroll_y = 1 + w_y - s_max;
 
        else
                return;
@@ -571,7 +570,7 @@ void config_screen_update(struct config_screen *screen,
        height = N_FIELDS + 3;
        if (sysinfo)
                height += sysinfo->n_interfaces;
-       if (!screen->pad || getmaxx(screen->pad) < height) {
+       if (!screen->pad || getmaxy(screen->pad) < height) {
                if (screen->pad)
                        delwin(screen->pad);
                screen->pad = newpad(height, COLS);