X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gtk%2Fxboard.c;h=df1f18e9f94237c21db0a9d62b2045ee34f9ba87;hb=88a788118a6c2a024d3a3dc42105ca0335f6812f;hp=3cac488ffabf68a84ad661e1edb155570af4f6d3;hpb=92ba67a9fbaf66d42f78ff0cdd36164d4369cc16;p=xboard.git
diff --git a/gtk/xboard.c b/gtk/xboard.c
index 3cac488..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]) 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]) 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);
@@ -1704,6 +1709,7 @@ ReSize (WindowPlacement *wp)
if(!strchr(appData.boardSize, ',')) {
ASSIGN(appData.boardSize, sizeDefaults[h].name);
}
+#ifndef OSXAPP
if(sizeDefaults[h].tinyLayout != tinyLayout) { // alter clipping of menu names to conform to board width
int clip = (tinyLayout = sizeDefaults[h].tinyLayout) + 1;
char text[MSG_SIZ];
@@ -1713,6 +1719,7 @@ ReSize (WindowPlacement *wp)
gtk_menu_item_set_label((GtkMenuItem *) mainOptions[h].handle, text);
}
}
+#endif
if(sqx != squareSize && !first) {
squareSize = sqx; // adopt new square size
CreatePNGPieces(); // make newly scaled pieces
@@ -2090,10 +2097,10 @@ LockBoardSize (int after)
static char *oldClockFont, *oldMessgFont;
int w, h;
if(oldMessgFont && !strcmp(oldMessgFont, appData.font) &&
- oldClockFont && !strcmp(oldClockFont, appData.clockFont) ) return; // only do something when font changed
+ oldClockFont && !strcmp(oldClockFont, appData.clockFont) && after < 2) return; // only do something when font changed
w = BOARD_WIDTH*(squareSize + lineGap) + lineGap;
h = BOARD_HEIGHT*(squareSize + lineGap) + lineGap;
- if(after) {
+ if(after & 1) {
ASSIGN(oldClockFont, appData.clockFont);
ASSIGN(oldMessgFont, appData.font);
gtk_window_resize(GTK_WINDOW(shellWidget), w, h);
@@ -2107,9 +2114,10 @@ LockBoardSize (int after)
void
DisplayTimerLabel (Option *opt, char *color, long timer, int highlight)
{
+ static int twoLines = -1;
GtkWidget *w = (GtkWidget *) opt->handle;
GdkColor col;
- char *markup;
+ char *markup, two = (appData.logoSize != 0);
char bgcolor[10];
char fgcolor[10];
@@ -2126,12 +2134,14 @@ DisplayTimerLabel (Option *opt, char *color, long timer, int highlight)
strcpy(fgcolor, appData.lowTimeWarningColor);
}
+ if(! partnerUp && two != twoLines) LockBoardSize(2); // lock board size if clock height changes
+
gdk_color_parse( bgcolor, &col );
gtk_widget_modify_bg(gtk_widget_get_parent(opt->handle), GTK_STATE_NORMAL, &col);
if (appData.clockMode) {
markup = g_markup_printf_escaped("%s:%s%s", appData.clockFont,
- bgcolor, fgcolor, color, appData.logoSize && !partnerUp ? "\n" : " ", TimeString(timer));
+ bgcolor, fgcolor, color, two ? "\n" : " ", TimeString(timer));
// markup = g_markup_printf_escaped("%s:%s%s",
// bgcolor, fgcolor, color, appData.logoSize && !partnerUp ? "\n" : " ", TimeString(timer));
} else {
@@ -2142,6 +2152,8 @@ DisplayTimerLabel (Option *opt, char *color, long timer, int highlight)
}
gtk_label_set_markup(GTK_LABEL(w), markup);
g_free(markup);
+
+ if(!partnerUp && two != twoLines) LockBoardSize(3), twoLines = two;
}
static GdkPixbuf **clockIcons[] = { &WhiteIcon, &BlackIcon };