Control Eval Graph with mouse
[xboard.git] / winboard / wgamelist.c
index fe8acec..feda2ca 100644 (file)
@@ -95,7 +95,7 @@ static int GameListToListBox( HWND hDlg, BOOL boReset, char * pszFilter, struct
 \r
         if(nItem % 2000 == 0) {\r
           snprintf(buf, MSG_SIZ, _("Scanning through games (%d)"), nItem);\r
-          SetWindowText(hwndMain, buf);\r
+          SetWindowText(hwndMain, buf); DoEvents();\r
         }\r
 \r
       if(!narrow || lg->position >= 0) {\r
@@ -406,6 +406,7 @@ VOID GameListPopUp(FILE *fp, char *filename)
     gameFileName = StrSave(filename);\r
   }\r
   CheckMenuItem(GetMenu(hwndMain), IDM_ShowGameList, MF_CHECKED);\r
+  EnableMenuItem(GetMenu(hwndMain), IDM_SaveSelected, MF_ENABLED);\r
   if (gameListDialog) {\r
     SendMessage(gameListDialog, WM_INITDIALOG, 0, 0);\r
     if (!gameListUp) ShowWindow(gameListDialog, SW_SHOW);\r
@@ -427,6 +428,7 @@ FILE *GameFile()
 VOID GameListPopDown(void)\r
 {\r
   CheckMenuItem(GetMenu(hwndMain), IDM_ShowGameList, MF_UNCHECKED);\r
+  EnableMenuItem(GetMenu(hwndMain), IDM_SaveSelected, MF_GRAYED);\r
   if (gameListDialog) ShowWindow(gameListDialog, SW_HIDE);\r
   gameListUp = FALSE;\r
 }\r
@@ -435,14 +437,22 @@ VOID GameListPopDown(void)
 VOID GameListHighlight(int index)\r
 {\r
   char buf[MSG_SIZ];\r
-  int i, res = 0;\r
+  int i, j, k, n, res = 0;\r
   if (gameListDialog == NULL) return;\r
-  for(i=0; res != LB_ERR; i++) {\r
+  for(i=64; ; i+=i) {\r
         res = SendDlgItemMessage( gameListDialog, OPT_GameListText, LB_GETTEXT, i, (LPARAM)buf );\r
-        if(index <= atoi( buf )) break;\r
+        if(res == LB_ERR || index < atoi( buf )) break;\r
   }\r
-  SendDlgItemMessage(gameListDialog, OPT_GameListText,\r
-    LB_SETCURSEL, i, 0);\r
+  j = i/2;\r
+  while(i-j > 1) {\r
+        n = (i + j) >> 1;\r
+        res = SendDlgItemMessage( gameListDialog, OPT_GameListText, LB_GETTEXT, n, (LPARAM)buf );\r
+        if(res == LB_ERR || index < (k = atoi( buf ))) i = n; else {\r
+            j = n;\r
+            if(index == k) break;\r
+        }\r
+  }\r
+  SendDlgItemMessage(gameListDialog, OPT_GameListText, LB_SETCURSEL, j, 0);\r
 }\r
 \r
 \r