All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Menu control for NPAGE and PPAGE
@ 2008-09-20 20:37 Carles Pina i Estany
  2008-09-24 10:34 ` Robert Millan
  0 siblings, 1 reply; 10+ messages in thread
From: Carles Pina i Estany @ 2008-09-20 20:37 UTC (permalink / raw)
  To: grub-devel

[-- Attachment #1: Type: text/plain, Size: 852 bytes --]


Hello,

(This patch includes the changes for GRUB_TERM_NPAGE/PPAGE macros, that
I sent in a previous mail)

ChangeLog:
--------
2008-09-20  Carles Pina i Estany  <carles@pina.cat>
	* normal/menu.c (run_menu): Add Previous and Next Page keys in
	grub-menu.

        * include/grub/powerpc/ieee1275/console.h (GRUB_TERM_NPAGE):
        Changed to 0x5100.
        (GRUB_TERM_PPAGE): Changed to 0x4900.

        * include/grub/sparc64/ieee1275/console.h: Likewise.

        * include/grub/i386/pc/console.h: Likewise.

        * include/grub/efi/console.h: Likewise.
--------

I've tested using several grub.cfg files.

Feel free to commit or test (I would fix any error, please send a step by step
user-case that fails -number of elements in the menu, description of what you
do)

Thanks,

-- 
Carles Pina i Estany		GPG id: 0x17756391
	http://pinux.info

[-- Attachment #2: ppage_npage_control01.patch --]
[-- Type: text/x-diff, Size: 3503 bytes --]

Index: include/grub/powerpc/ieee1275/console.h
===================================================================
--- include/grub/powerpc/ieee1275/console.h	(revision 1864)
+++ include/grub/powerpc/ieee1275/console.h	(working copy)
@@ -29,8 +29,8 @@
 #define GRUB_CONSOLE_KEY_BACKSPACE	0x0008
 #define GRUB_CONSOLE_KEY_HOME		0x4700
 #define GRUB_CONSOLE_KEY_END		0x4F00
-#define GRUB_CONSOLE_KEY_NPAGE		0x4900
-#define GRUB_CONSOLE_KEY_PPAGE		0x5100
+#define GRUB_CONSOLE_KEY_NPAGE		0x5100
+#define GRUB_CONSOLE_KEY_PPAGE		0x4900
 
 /* Initialize the console system.  */
 void grub_console_init (void);
Index: include/grub/sparc64/ieee1275/console.h
===================================================================
--- include/grub/sparc64/ieee1275/console.h	(revision 1864)
+++ include/grub/sparc64/ieee1275/console.h	(working copy)
@@ -30,8 +30,8 @@
 #define GRUB_CONSOLE_KEY_BACKSPACE	0x0008
 #define GRUB_CONSOLE_KEY_HOME		0x4700
 #define GRUB_CONSOLE_KEY_END		0x4F00
-#define GRUB_CONSOLE_KEY_NPAGE		0x4900
-#define GRUB_CONSOLE_KEY_PPAGE		0x5100
+#define GRUB_CONSOLE_KEY_NPAGE		0x5100
+#define GRUB_CONSOLE_KEY_PPAGE		0x4900
 
 /* Initialize the console system.  */
 void grub_console_init (void);
Index: include/grub/i386/pc/console.h
===================================================================
--- include/grub/i386/pc/console.h	(revision 1864)
+++ include/grub/i386/pc/console.h	(working copy)
@@ -29,8 +29,8 @@
 #define GRUB_CONSOLE_KEY_BACKSPACE	0x0008
 #define GRUB_CONSOLE_KEY_HOME		0x4700
 #define GRUB_CONSOLE_KEY_END		0x4F00
-#define GRUB_CONSOLE_KEY_NPAGE		0x4900
-#define GRUB_CONSOLE_KEY_PPAGE		0x5100
+#define GRUB_CONSOLE_KEY_NPAGE		0x5100
+#define GRUB_CONSOLE_KEY_PPAGE		0x4900
 
 #ifndef ASM_FILE
 
Index: include/grub/efi/console.h
===================================================================
--- include/grub/efi/console.h	(revision 1864)
+++ include/grub/efi/console.h	(working copy)
@@ -29,8 +29,8 @@
 #define GRUB_CONSOLE_KEY_BACKSPACE	0x0008
 #define GRUB_CONSOLE_KEY_HOME		0x4700
 #define GRUB_CONSOLE_KEY_END		0x4F00
-#define GRUB_CONSOLE_KEY_NPAGE		0x4900
-#define GRUB_CONSOLE_KEY_PPAGE		0x5100
+#define GRUB_CONSOLE_KEY_NPAGE		0x5100
+#define GRUB_CONSOLE_KEY_PPAGE		0x4900
 
 #include <grub/types.h>
 #include <grub/symbol.h>
Index: normal/menu.c
===================================================================
--- normal/menu.c	(revision 1864)
+++ normal/menu.c	(working copy)
@@ -457,6 +457,52 @@
 		    }
 		}
 	      break;
+	    
+	    case GRUB_TERM_PPAGE:
+	      if (first == 0)
+		{
+		  offset = 0;
+		}
+	      else
+		{
+		  first = first - GRUB_TERM_NUM_ENTRIES;
+
+		  if (first < 0)
+		    {
+		      offset = offset + first;
+		      first = 0;
+		    }
+		}
+	      print_entries (menu, first, offset);
+	      break;
+
+	    case GRUB_TERM_NPAGE:
+	      if (offset==0)
+		{
+		  offset = offset + GRUB_TERM_NUM_ENTRIES -1 ;
+		  if (first+offset>menu->size)
+		    {
+		      offset=menu->size-first-1;
+		    }
+		}
+	      else
+		{
+		  first = first + GRUB_TERM_NUM_ENTRIES;
+			
+		  if (first + offset >= menu->size)
+		    {
+		      first = first - GRUB_TERM_NUM_ENTRIES;
+		      offset = menu->size - 1;
+		      
+		      if (offset > menu->size - 1 || offset > GRUB_TERM_NUM_ENTRIES - 1)
+			{
+			  first = offset - (GRUB_TERM_NUM_ENTRIES - 1);
+			  offset = GRUB_TERM_NUM_ENTRIES - 1;
+			}
+		    }
+		}
+	      print_entries (menu, first, offset);
+	      break;
 	      
 	    case '\n':
 	    case '\r':

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2008-11-01 12:42 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-09-20 20:37 [PATCH] Menu control for NPAGE and PPAGE Carles Pina i Estany
2008-09-24 10:34 ` Robert Millan
2008-09-24 16:07   ` Carles Pina i Estany
2008-09-24 16:33     ` Robert Millan
2008-09-24 16:50       ` Carles Pina i Estany
2008-09-24 17:07         ` Carles Pina i Estany
2008-10-21 18:39         ` Carles Pina i Estany
2008-10-21 22:09           ` Pavel Roskin
2008-10-25 19:02             ` Carles Pina i Estany
2008-11-01 12:42               ` Robert Millan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.