]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[pxe] Avoid drawing menu items on bottom row of screen 858/head
authorMichael Brown <mcb30@ipxe.org>
Mon, 23 Jan 2023 14:35:57 +0000 (14:35 +0000)
committerMichael Brown <mcb30@ipxe.org>
Mon, 23 Jan 2023 20:30:59 +0000 (20:30 +0000)
Many consoles will scroll immediately upon drawing a character in the
rightmost column of the bottom row of the display, in order to be able
to advance the cursor to the next character (even if the cursor is
disabled).

This causes PXE menus to display incorrectly.  Specifically, pressing
the down arrow key while already on the last menu item may cause the
whole screen to scroll and the line to be duplicated.

Fix by moving the PXE menu one row up from the bottom of the screen.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/usr/pxemenu.c

index 5e497f990118a0253b29847858a14fcf3d89a04e..34fdf37ee2f87db6074e6ed1e55b518219f29a92 100644 (file)
@@ -204,7 +204,7 @@ static void pxe_menu_draw_item ( struct pxe_menu *menu,
        buf[ sizeof ( buf ) - 1 ] = '\0';
 
        /* Draw row */
-       row = ( LINES - menu->num_items + index );
+       row = ( LINES - menu->num_items + index - 1 );
        color_set ( ( selected ? CPAIR_PXE : CPAIR_DEFAULT ), NULL );
        mvprintw ( row, 0, "%s", buf );
        move ( row, 1 );