Reset fontIsSet when sizing causes change to default font
[xboard.git] / dialogs.c
index 306bc97..0c1abf1 100644 (file)
--- a/dialogs.c
+++ b/dialogs.c
@@ -1624,23 +1624,38 @@ ShuffleMenuProc ()
 
 static void AdjustFont P((int n));
 
+static char *oldFont[7];
+
 static int
 FontsOK (int n)
 {
     extern Option historyOptions[], engoutOptions[], gamesOptions[], chatOptions[];
     int i;
-    DisplayBothClocks();
-    ApplyFont(&mainOptions[W_MESSG], NULL);
-    for(i=1; i<6; i++) ApplyFont(&mainOptions[W_BUTTON+i], NULL);
-    ApplyFont(&tagsOptions[1], NULL);
-    ApplyFont(&historyOptions[0], NULL);
-    ApplyFont(&engoutOptions[5], NULL);
-    ApplyFont(&engoutOptions[12], NULL);
-    ApplyFont(&gamesOptions[0], NULL);
-    ApplyFont(&chatOptions[11], appData.icsFont);
-    AppendColorized(&chatOptions[6], NULL, 0); // kludge to replace font tag
+    PopDown(TransientDlg); // Early popdown to prevent expose events frommasking each other
+    LockBoardSize(0);
+    if(strcmp(oldFont[0], appData.clockFont)) fontIsSet[CLOCK_FONT] = 1, DisplayBothClocks();
+    if(strcmp(oldFont[1], appData.font)) {
+       fontIsSet[MESSAGE_FONT] = 1;
+       ApplyFont(&mainOptions[W_MESSG], NULL);
+       for(i=1; i<6; i++) ApplyFont(&mainOptions[W_BUTTON+i], NULL);
+    }
+    LockBoardSize(1); // unlock
+    if(strcmp(oldFont[3], appData.tagsFont)) fontIsSet[EDITTAGS_FONT] = 1, ApplyFont(&tagsOptions[1], NULL);
+    if(strcmp(oldFont[4], appData.commentFont)) fontIsSet[COMMENT_FONT] = 1, ApplyFont(&commentOptions[0], NULL);
+    if(strcmp(oldFont[5], appData.historyFont)) {
+       fontIsSet[MOVEHISTORY_FONT] = 1;
+       ApplyFont(&historyOptions[0], NULL);
+       ApplyFont(&engoutOptions[5], NULL);
+       ApplyFont(&engoutOptions[12], NULL);
+    }
+    if(strcmp(oldFont[6], appData.gameListFont)) fontIsSet[GAMELIST_FONT] = 1, ApplyFont(&gamesOptions[0], NULL);
+    if(strcmp(oldFont[2], appData.icsFont)) {
+       fontIsSet[CONSOLE_FONT] = 1;
+       ApplyFont(&chatOptions[11], appData.icsFont);
+       AppendColorized(&chatOptions[6], NULL, 0); // kludge to replace font tag
+    }
     DrawPosition(TRUE, NULL); // for coord font
-    return 1;
+    return 0; // suppress normal popdown because already done
 }
 
 static Option fontOptions[] = {
@@ -1742,7 +1757,10 @@ FontsProc ()
     int i;
     if(strstr(appData.font, "-*-")) { DisplayNote(_("This only works in the GTK build")); return; }
     GenericPopUp(fontOptions, _("Fonts"), TransientDlg, BoardWindow, MODAL, 0);
-    for(i=0; i<6; i++) ApplyFont(&fontOptions[6*i], *(char**)fontOptions[6*i].target);
+    for(i=0; i<7; i++) {
+       ApplyFont(&fontOptions[6*i], *(char**)fontOptions[6*i].target);
+       ASSIGN(oldFont[i], *(char**)fontOptions[6*i].target);
+    }
 }
 
 //------------------------------------------------------ Time Control -----------------------------------