File htdig-google-style.patch of Package htdig

Index: htsearch/Display.cc
===================================================================
--- htsearch/Display.cc.orig
+++ htsearch/Display.cc
@@ -694,6 +694,38 @@
     //
     if (nPages > 1)
     {
+    // Assume number of page links is equal to maximum_page_buttons
+    // For example, if pageNumber=9, maximum_page_buttons=10,
+    // and nPages>=13, we get:
+    //
+    // [prev] 4 5 6 7 8 9 10 11 12 13 [next]
+ 
+    int nPageButtons = config->Value("maximum_page_buttons", 10);
+
+    // Initialize indexes of pages links
+    int first_page_index = 1;
+    int last_page_index  = nPages;
+
+    if (nPages > nPageButtons)
+    {
+      // Try to center the current page
+      int links_on_the_left = nPageButtons/2;
+      first_page_index = pageNumber - links_on_the_left;
+      last_page_index  = first_page_index + nPageButtons - 1;
+
+      // Adjust if required
+      if (first_page_index < 1)
+      {
+         first_page_index = 1;
+         last_page_index  = nPageButtons;
+      }
+      else if (last_page_index > nPages )
+      {
+         last_page_index  = nPages;
+         first_page_index = nPages - nPageButtons + 1;
+      }
+    }
+
 	if (pageNumber > 1)
 	{
 	    str = new String("<a href=\"");
@@ -725,9 +757,7 @@
 	QuotedStringList	pnt(config->Find("page_number_text"), " \t\r\n");
 	QuotedStringList	npnt(config->Find("no_page_number_text"), " \t\r\n");
 	QuotedStringList	sep(config->Find("page_number_separator"), " \t\r\n");
-	if (nPages > config->Value("maximum_page_buttons", 10))
-	    nPages = config->Value("maximum_page_buttons", 10);
-	for (i = 1; i <= nPages; i++)
+    for (i = first_page_index; i <= last_page_index; i++)
 	{
 	    if (i == pageNumber)
 	    {
openSUSE Build Service is sponsored by