X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gtk%2Fxboard.c;h=7ea83829ad28b6250e0dc681d638bb7a05b79f90;hb=b4f97ed2dd6c9d8e9d780211d8ebc54803d46403;hp=eb7457d182b209a09a1d4dbb5ab359694291cbe5;hpb=945cd7a8c01737a506fcb7c304dfdc71d6fab144;p=xboard.git diff --git a/gtk/xboard.c b/gtk/xboard.c index eb7457d..7ea8382 100644 --- a/gtk/xboard.c +++ b/gtk/xboard.c @@ -1662,7 +1662,7 @@ void ReSize (WindowPlacement *wp) { GtkAllocation a; - int sqx, sqy, w, h, lg = lineGap; + int sqx, sqy, i, w, h, lg = lineGap; static int first = 1; // DisplayBothClocks(); if(wp->width == wpMain.width && wp->height == wpMain.height && !first) return; // not sized @@ -1691,19 +1691,30 @@ ReSize (WindowPlacement *wp) if(sqx == oldSqx + 1 && lg == lineGap + 1) sqx = oldSqx, squareSize = 0; // prevent oscillations, force resize by kludge } 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); + DisplayBothClocks(); + ApplyFont(&mainOptions[W_MESSG], NULL); + for(i=1; i<6; i++) ApplyFont(&mainOptions[W_BUTTON+i], NULL); + } if(!strchr(appData.boardSize, ',')) { ASSIGN(appData.boardSize, sizeDefaults[h].name); - initialSquareSize = sizeDefaults[h].squareSize; // used for saving font } +#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]; for(h=1; mainOptions[h].type == DropDown; h++) { strncpy(text, _(mainOptions[h].name), MSG_SIZ); - text[clip + (text[clip-1] == '_')] = NULLCHAR; + if(clip != 1) text[clip + (text[clip-1] == '_')] = NULLCHAR; 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 @@ -2081,10 +2092,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); @@ -2098,9 +2109,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]; @@ -2117,12 +2129,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 { @@ -2133,6 +2147,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 };