Save font settings based on initial square size
authorH.G.Muller <hgm@hgm-xboard.(none)>
Sun, 3 Apr 2016 08:23:49 +0000 (10:23 +0200)
committerH.G.Muller <hgm@hgm-xboard.(none)>
Sun, 3 Apr 2016 13:14:22 +0000 (15:14 +0200)
Font settings were saved by the square size as it was at the time of
saving, which could have been altered compared to the reading of the
fonts from the settings file by interactive sizing of the window, or
by switching to a variant with other board dimensions. Now the initial
square size is remembered and used for this.
BEWARE: we might want to undo this when window sizing would affect font
selection, rather than just sizing the board.

gtk/xboard.c

index 5e2314a..a7b10ca 100644 (file)
@@ -256,6 +256,7 @@ GtkAccelGroup *GtkAccelerators;
 typedef unsigned int BoardSize;
 BoardSize boardSize;
 Boolean chessProgram;
+static int initialSquareSize;
 
 int  minX, minY; // [HGM] placement: volatile limits on upper-left corner
 int smallLayout = 0, tinyLayout = 0,
@@ -516,9 +517,9 @@ SaveFontArg (FILE *f, ArgDescriptor *ad)
       return;
   }
   for(i=0; i<NUM_SIZES; i++) // [HGM] font: current font becomes standard for current size
-    if(sizeDefaults[i].squareSize == squareSize) { // only for standard sizes!
-       fontTable[n][squareSize] = strdup(name);
-       fontValid[n][squareSize] = True;
+    if(sizeDefaults[i].squareSize == initialSquareSize) { // only for standard sizes!
+       fontTable[n][initialSquareSize] = strdup(name);
+       fontValid[n][initialSquareSize] = True;
        break;
   }
   for(i=0; i<MAX_SIZE; i++) if(fontValid[n][i]) // [HGM] font: store all standard fonts
@@ -1073,6 +1074,7 @@ main (int argc, char **argv)
        tinyLayout = szd->tinyLayout;
        // [HGM] font: use defaults from settings file if available and not overruled
     }
+    initialSquareSize = squareSize; // [HGM] remember for saving font info
     if(BOARD_WIDTH != 8) {
        squareSize = (squareSize*8 + BOARD_WIDTH/2)/BOARD_WIDTH; // keep width the same
        lineGap = (squareSize < 37 ? 1 : squareSize < 59 ? 2 : squareSize < 116 ? 3 : 4);