diff --git a/ChangeLog b/ChangeLog index 1e472cfa4..5d81a1e42 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2009-03-06 Robert Millan + + Fix display issue on terminals with screen size other than 80x25 + (e.g. gfxterm with resolution higher than 640x480). + + * normal/main.c (grub_normal_init_page): Display title text in a + position relative to the center of the terminal instead of reliing + on a hardcoded offset. + 2009-03-04 Robert Millan Filter /etc/grub.d/10_* so that only add-ons for native kernels are diff --git a/normal/main.c b/normal/main.c index a0c013555..ea60b8374 100644 --- a/normal/main.c +++ b/normal/main.c @@ -389,10 +389,22 @@ grub_enter_normal_mode (const char *config) void grub_normal_init_page (void) { + grub_uint8_t width, margin; + +#define TITLE ("GNU GRUB version " PACKAGE_VERSION) + + width = grub_getwh () >> 8; + margin = (width - (sizeof(TITLE) + 7)) / 2; + grub_cls (); - grub_printf ("\n\ - GNU GRUB version %s\n\n", - PACKAGE_VERSION); + grub_putchar ('\n'); + + while (margin--) + grub_putchar (' '); + + grub_printf ("%s\n\n", TITLE); + +#undef TITLE } /* Read the file command.lst for auto-loading. */