Fix up/down arrows in game list
authorH.G. Muller <h.g.muller@hccnet.nl>
Mon, 8 Aug 2011 09:00:12 +0000 (11:00 +0200)
committerH.G. Muller <h.g.muller@hccnet.nl>
Mon, 8 Aug 2011 09:00:12 +0000 (11:00 +0200)
xgamelist.c

index abccb04..5767b98 100644 (file)
@@ -363,6 +363,7 @@ GameListPrepare(int byPos)
 }
 
 static char *list[1003];
 }
 
 static char *list[1003];
+int listEnd;
 
 static void
 GameListReplace(int page)
 
 static void
 GameListReplace(int page)
@@ -374,7 +375,8 @@ GameListReplace(int page)
   int i;
 
   if(page) *st++ = _("previous page"); else if(listLength > 1000) *st++ = "";
   int i;
 
   if(page) *st++ = _("previous page"); else if(listLength > 1000) *st++ = "";
-  for(i=0; i<1000; i++) if( !(*st++ = glc->strings[page+i]) ) break;
+  for(i=0; i<1000; i++) if( !(*st++ = glc->strings[page+i]) ) { st--; break; }
+  listEnd = st - list;
   if(page + 1000 <= listLength) *st++ = _("next page");
   *st = NULL;
 
   if(page + 1000 <= listLength) *st++ = _("next page");
   *st = NULL;
 
@@ -576,8 +578,8 @@ LoadSelectedProc(w, event, prms, nprms)
        if(doLoad) direction /= 3;
        index += direction;
        if(direction == -2) index = 0;
        if(doLoad) direction /= 3;
        index += direction;
        if(direction == -2) index = 0;
-       if(direction == 2) index = listLength-1;
-       if(index < 0 || index >= listLength) return;
+       if(direction == 2) index = listEnd-1;
+       if(index < 0 || index >= listEnd) return;
        XawListHighlight(listwidg, index);
        if(!doLoad) return;
     }
        XawListHighlight(listwidg, index);
        if(!doLoad) return;
     }