From: H.G.Muller Date: Wed, 6 Apr 2016 13:45:11 +0000 (+0200) Subject: Store fonts changed by font dialog in fonts table X-Git-Url: http://winboard.nl/cgi-bin?p=xboard.git;a=commitdiff_plain;h=aedcb1a2e157f3cc39809c0c48a107f3df6c84db;hp=fae5c4d7152788cbe63069bdb97f6c2df5ec08ee Store fonts changed by font dialog in fonts table The fonts table holds fonts per type and size that should be saved in the settings file because they were either read from it, or explicitly specified by the user on the command line. This now also holds for fonts altered through the Fonts dialog, without waiting for the saving of settings, because by that time the boardSize might already be different. --- diff --git a/dialogs.c b/dialogs.c index 0c1abf1..039232d 100644 --- a/dialogs.c +++ b/dialogs.c @@ -1627,30 +1627,36 @@ static void AdjustFont P((int n)); static char *oldFont[7]; static int +NewFont (int n, int fnr, char *font) +{ // figure out if font changed, and if so, store it in the fonts table as a side effect + if(!strcmp(oldFont[n], font)) return 0; // not changed + ASSIGN(fontTable[fnr][initialSquareSize], font); + fontIsSet[fnr] = fontValid[fnr][initialSquareSize] = True; + return 1; // changed +} + +static int FontsOK (int n) { extern Option historyOptions[], engoutOptions[], gamesOptions[], chatOptions[]; int i; 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; + if(NewFont(0, CLOCK_FONT, appData.clockFont)) DisplayBothClocks(); + if(NewFont(1, MESSAGE_FONT, appData.font)) { 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; + if(NewFont(3, EDITTAGS_FONT, appData.tagsFont)) ApplyFont(&tagsOptions[1], NULL); + if(NewFont(4, COMMENT_FONT, appData.commentFont)) ApplyFont(&commentOptions[0], NULL); + if(NewFont(5, MOVEHISTORY_FONT, appData.historyFont)) { 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; + if(NewFont(6, GAMELIST_FONT, appData.gameListFont)) ApplyFont(&gamesOptions[0], NULL); + if(NewFont(2, CONSOLE_FONT, appData.icsFont)) { ApplyFont(&chatOptions[11], appData.icsFont); AppendColorized(&chatOptions[6], NULL, 0); // kludge to replace font tag } diff --git a/dialogs.h b/dialogs.h index fa4ee52..65e7b59 100644 --- a/dialogs.h +++ b/dialogs.h @@ -133,7 +133,10 @@ extern WindowPlacement wpComment, wpTags, wpMoveHistory, wpMain, wpDualBoard, wp extern char *marked[]; extern Boolean shellUp[]; extern Option textOptions[], typeOptions[], dualOptions[], mainOptions[]; -extern Boolean fontIsSet[]; +#define MAX_SIZE 130 +extern Boolean fontIsSet[], fontValid[][MAX_SIZE]; +extern int initialSquareSize; +extern char *fontTable[][MAX_SIZE]; void GetPlacement P((DialogClass dlg, WindowPlacement *wp));