From 88a788118a6c2a024d3a3dc42105ca0335f6812f Mon Sep 17 00:00:00 2001 From: H.G.Muller Date: Wed, 6 Apr 2016 14:08:49 +0200 Subject: [PATCH] Reset fontIsSet when sizing causes change to default font The array fontIsSet now tracks whether the fonts in actual use are from a (possibly size-adapted) default, or were specified by an option (also through a fontIsValid entry in the fontsTable) or the Fonts dialog. For changing a font on sizing a subroutine is now used. --- dialogs.c | 15 +++++++-------- dialogs.h | 1 + gtk/xboard.c | 29 +++++++++++++++++------------ 3 files changed, 25 insertions(+), 20 deletions(-) diff --git a/dialogs.c b/dialogs.c index c8c5729..0c1abf1 100644 --- a/dialogs.c +++ b/dialogs.c @@ -1625,7 +1625,6 @@ ShuffleMenuProc () static void AdjustFont P((int n)); static char *oldFont[7]; -char fontChanged[8]; static int FontsOK (int n) @@ -1634,24 +1633,24 @@ FontsOK (int n) int i; PopDown(TransientDlg); // Early popdown to prevent expose events frommasking each other LockBoardSize(0); - if(strcmp(oldFont[0], appData.clockFont)) fontChanged[CLOCK_FONT] = 1, DisplayBothClocks(); + if(strcmp(oldFont[0], appData.clockFont)) fontIsSet[CLOCK_FONT] = 1, DisplayBothClocks(); if(strcmp(oldFont[1], appData.font)) { - fontChanged[MESSAGE_FONT] = 1; + 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)) fontChanged[EDITTAGS_FONT] = 1, ApplyFont(&tagsOptions[1], NULL); - if(strcmp(oldFont[4], appData.commentFont)) fontChanged[COMMENT_FONT] = 1, ApplyFont(&commentOptions[0], NULL); + 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)) { - fontChanged[MOVEHISTORY_FONT] = 1; + fontIsSet[MOVEHISTORY_FONT] = 1; ApplyFont(&historyOptions[0], NULL); ApplyFont(&engoutOptions[5], NULL); ApplyFont(&engoutOptions[12], NULL); } - if(strcmp(oldFont[6], appData.gameListFont)) fontChanged[GAMELIST_FONT] = 1, ApplyFont(&gamesOptions[0], NULL); + if(strcmp(oldFont[6], appData.gameListFont)) fontIsSet[GAMELIST_FONT] = 1, ApplyFont(&gamesOptions[0], NULL); if(strcmp(oldFont[2], appData.icsFont)) { - fontChanged[CONSOLE_FONT] = 1; + fontIsSet[CONSOLE_FONT] = 1; ApplyFont(&chatOptions[11], appData.icsFont); AppendColorized(&chatOptions[6], NULL, 0); // kludge to replace font tag } diff --git a/dialogs.h b/dialogs.h index 0d933d9..fa4ee52 100644 --- a/dialogs.h +++ b/dialogs.h @@ -133,6 +133,7 @@ extern WindowPlacement wpComment, wpTags, wpMoveHistory, wpMain, wpDualBoard, wp extern char *marked[]; extern Boolean shellUp[]; extern Option textOptions[], typeOptions[], dualOptions[], mainOptions[]; +extern Boolean fontIsSet[]; void GetPlacement P((DialogClass dlg, WindowPlacement *wp)); diff --git a/gtk/xboard.c b/gtk/xboard.c index 7ea8382..df1f18e 100644 --- a/gtk/xboard.c +++ b/gtk/xboard.c @@ -444,6 +444,13 @@ SetFontDefaults () } void +ChangeFont (char **font, int fnr, int size, char *def, int pix) +{ + if(!fontValid[fnr][size]) { ASSIGN(fontTable[fnr][size], def); fontIsSet[fnr] = False; } // use default + FREE(*font); *font = InsertPxlSize(fontTable[fnr][size], pix); +} + +void CreateFonts () { // no-op, until we identify the code for this already in XBoard and move it here } @@ -669,21 +676,21 @@ InitializeFonts (int clockFontPxlSize, int coordFontPxlSize, int fontPxlSize) { // determine what fonts to use, and create them if(!fontIsSet[CLOCK_FONT] && fontValid[CLOCK_FONT][squareSize]) - appData.clockFont = fontTable[CLOCK_FONT][squareSize]; + appData.clockFont = fontTable[CLOCK_FONT][squareSize], fontIsSet[CLOCK_FONT] = True; if(!fontIsSet[MESSAGE_FONT] && fontValid[MESSAGE_FONT][squareSize]) - appData.font = fontTable[MESSAGE_FONT][squareSize]; + appData.font = fontTable[MESSAGE_FONT][squareSize], fontIsSet[MESSAGE_FONT] = True; if(!fontIsSet[COORD_FONT] && fontValid[COORD_FONT][squareSize]) - appData.coordFont = fontTable[COORD_FONT][squareSize]; + appData.coordFont = fontTable[COORD_FONT][squareSize], fontIsSet[COORD_FONT] = True; if(!fontIsSet[CONSOLE_FONT] && fontValid[CONSOLE_FONT][squareSize]) - appData.icsFont = fontTable[CONSOLE_FONT][squareSize]; + appData.icsFont = fontTable[CONSOLE_FONT][squareSize], fontIsSet[CONSOLE_FONT] = True; if(!fontIsSet[EDITTAGS_FONT] && fontValid[EDITTAGS_FONT][squareSize]) - appData.tagsFont = fontTable[EDITTAGS_FONT][squareSize]; + appData.tagsFont = fontTable[EDITTAGS_FONT][squareSize], fontIsSet[EDITTAGS_FONT] = True; if(!fontIsSet[COMMENT_FONT] && fontValid[COMMENT_FONT][squareSize]) - appData.commentFont = fontTable[COMMENT_FONT][squareSize]; + appData.commentFont = fontTable[COMMENT_FONT][squareSize], fontIsSet[COMMENT_FONT] = True; if(!fontIsSet[MOVEHISTORY_FONT] && fontValid[MOVEHISTORY_FONT][squareSize]) - appData.historyFont = fontTable[MOVEHISTORY_FONT][squareSize]; + appData.historyFont = fontTable[MOVEHISTORY_FONT][squareSize], fontIsSet[MOVEHISTORY_FONT] = True; if(!fontIsSet[GAMELIST_FONT] && fontValid[GAMELIST_FONT][squareSize]) - appData.gameListFont = fontTable[GAMELIST_FONT][squareSize]; + appData.gameListFont = fontTable[GAMELIST_FONT][squareSize], fontIsSet[GAMELIST_FONT] = True; appData.font = InsertPxlSize(appData.font, coordFontPxlSize); appData.clockFont = InsertPxlSize(appData.clockFont, clockFontPxlSize); @@ -1693,10 +1700,8 @@ ReSize (WindowPlacement *wp) for(h=0; sizeDefaults[h].name && sizeDefaults[h].squareSize*8 > sqx*BOARD_WIDTH; h++) {} if(initialSquareSize != sizeDefaults[h].squareSize) { // boardSize changed initialSquareSize = sizeDefaults[h].squareSize; // used for saving font - if(!fontValid[CLOCK_FONT][initialSquareSize]) { ASSIGN(fontTable[CLOCK_FONT][initialSquareSize], CLOCK_FONT_NAME); } - appData.clockFont = InsertPxlSize(fontTable[CLOCK_FONT][initialSquareSize], 2*(sizeDefaults[h].clockFontPxlSize+1)/3); - if(!fontValid[MESSAGE_FONT][initialSquareSize]) { ASSIGN(fontTable[MESSAGE_FONT][initialSquareSize], DEFAULT_FONT_NAME); } - appData.font = InsertPxlSize(fontTable[MESSAGE_FONT][initialSquareSize], sizeDefaults[h].coordFontPxlSize); + ChangeFont(&appData.clockFont, CLOCK_FONT, initialSquareSize, CLOCK_FONT_NAME, 2*(sizeDefaults[h].clockFontPxlSize+1)/3); + ChangeFont(&appData.font, MESSAGE_FONT, initialSquareSize, DEFAULT_FONT_NAME, sizeDefaults[h].coordFontPxlSize); DisplayBothClocks(); ApplyFont(&mainOptions[W_MESSG], NULL); for(i=1; i<6; i++) ApplyFont(&mainOptions[W_BUTTON+i], NULL); -- 1.7.0.4