From 7ba011f8aff2b5c485426888be6ab988eeec99f9 Mon Sep 17 00:00:00 2001 From: H.G.Muller Date: Wed, 6 Apr 2016 11:56:36 +0200 Subject: [PATCH] Only adjust fonts that are actually changed OK-ing the Fonts dialog now checks which fonts have been changed, and only applies those to the widgets that use them. In addition it sets a flag to indicate that the changed font no longer is a default. A bug that did not apply the gameListFont for preview is now also fixed. --- dialogs.c | 40 ++++++++++++++++++++++++++++------------ 1 files changed, 28 insertions(+), 12 deletions(-) diff --git a/dialogs.c b/dialogs.c index 2cdf6a9..38f163c 100644 --- a/dialogs.c +++ b/dialogs.c @@ -1624,6 +1624,9 @@ ShuffleMenuProc () static void AdjustFont P((int n)); +static char *oldFont[7]; +char fontChanged[8]; + static int FontsOK (int n) { @@ -1631,17 +1634,27 @@ FontsOK (int n) int i; PopDown(TransientDlg); // Early popdown to prevent expose events frommasking each other LockBoardSize(0); - DisplayBothClocks(); - ApplyFont(&mainOptions[W_MESSG], NULL); - for(i=1; i<6; i++) ApplyFont(&mainOptions[W_BUTTON+i], NULL); - LockBoardSize(1); - 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 + if(strcmp(oldFont[0], appData.clockFont)) fontChanged[CLOCK_FONT] = 1, DisplayBothClocks(); + if(strcmp(oldFont[1], appData.font)) { + fontChanged[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[1], NULL); + if(strcmp(oldFont[5], appData.historyFont)) { + fontChanged[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[2], appData.icsFont)) { + fontChanged[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 0; // suppress normal popdown because already done } @@ -1745,7 +1758,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 ----------------------------------- -- 1.7.0.4