ui/ncurses: Correctly size pad for config screen
authorSamuel Mendoza-Jonas <sam.mj@au1.ibm.com>
Wed, 10 Sep 2014 00:50:44 +0000 (10:50 +1000)
committerJeremy Kerr <jk@ozlabs.org>
Wed, 10 Sep 2014 00:55:42 +0000 (08:55 +0800)
Signed-off-by: Samuel Mendoza-Jonas <sam.mj@au1.ibm.com>
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
ui/ncurses/nc-config.c

index 7a709ab1a3e3cf69914e65a717775fdb2f6354cc..4b1a58f98ade8635b16b941ee2ab341407b2987d 100644 (file)
@@ -781,13 +781,18 @@ static void config_screen_draw(struct config_screen *screen,
        /* The size of the pad we'll need depends on the number of interfaces.
         *
         * We use N_FIELDS (which is quite conservative, as some fields share
        /* The size of the pad we'll need depends on the number of interfaces.
         *
         * We use N_FIELDS (which is quite conservative, as some fields share
-        * a line) as a base, then add 3 (as the network select field is
-        * takes 3 lines), and n_interfaces (as the network interface field
-        * has n_interfaces lines).
+        * a line) as a base, then:
+        * - add 6 (as the network select & boot device select fields take 3
+        *   lines each),
+        * - add n_interfaces for every field in the network select field, and
+        * - add (n_blockdevs + n_interfaces) for every field in the boot device
+        *   select field
         */
         */
-       height = N_FIELDS + 3;
-       if (sysinfo)
+       height = N_FIELDS + 6;
+       if (sysinfo) {
                height += sysinfo->n_interfaces;
                height += sysinfo->n_interfaces;
+               height += (sysinfo->n_blockdevs + sysinfo->n_interfaces);
+       }
        if (!screen->pad || getmaxy(screen->pad) < height) {
                if (screen->pad)
                        delwin(screen->pad);
        if (!screen->pad || getmaxy(screen->pad) < height) {
                if (screen->pad)
                        delwin(screen->pad);