X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gtk%2Fxboard.c;h=f9163b8758bea201f98a4088cda46b72f321b6f6;hb=418e072593e78839d701e7dc0634e8ebc08113af;hp=03f2f9a2a7165eac9da16406e8a80b56a5931a78;hpb=f5445dab3a8035dfdfa3eb8581d323c0661390fb;p=xboard.git diff --git a/gtk/xboard.c b/gtk/xboard.c index 03f2f9a..f9163b8 100644 --- a/gtk/xboard.c +++ b/gtk/xboard.c @@ -653,7 +653,7 @@ ResizeBoardWindow (int w, int h, int inhibit) gtk_widget_set_size_request(optList[W_BOARD].handle, w, h); // protect board widget // w += marginW + 1; // [HGM] not sure why the +1 is (sometimes) needed... // h += marginH + a.height + 1; - gtk_window_resize(GTK_WINDOW(shellWidget), w, h); + gtk_window_resize(GTK_WINDOW(shellWidget), w, 10); DoEvents(); gtk_widget_set_size_request(optList[W_BOARD].handle, -1, -1); // liberate board again } @@ -1662,8 +1662,9 @@ 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 gtk_widget_get_allocation(optList[W_DROP+1].handle, &a); // table that should contain everything w = a.width; h = a.height; @@ -1689,6 +1690,29 @@ ReSize (WindowPlacement *wp) lg = sqx < 37 ? 1 : sqx < 59 ? 2 : sqx < 116 ? 3 : 4; 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]) 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); + 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); + } + 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; + gtk_menu_item_set_label((GtkMenuItem *) mainOptions[h].handle, text); + } + } if(sqx != squareSize && !first) { squareSize = sqx; // adopt new square size CreatePNGPieces(); // make newly scaled pieces @@ -1713,8 +1737,10 @@ void DragProc () { static int busy; - if(busy) return; - + if(busy) { // prevent recursive calling, but postpone interrupting call rather than lose it + if(!delayedDragTag) delayedDragTag = g_timeout_add( 200, (GSourceFunc) DragProc, NULL); + return; + } busy = 1; GetActualPlacement(shellWidget, &wpNew); if(wpNew.x == wpMain.x && wpNew.y == wpMain.y && // not moved @@ -1754,6 +1780,7 @@ EventProc (GtkWidget *widget, GdkEvent *event, gpointer g) wpNew.y = event->configure.y; wpNew.width = event->configure.width; wpNew.height = event->configure.height; +// SetWidgetLabel(&mainOptions[W_WHITE], ""); SetWidgetLabel(&mainOptions[W_BLACK], ""); DelayedDrag(); // as long as events keep coming in faster than 50 msec, they destroy each other return FALSE; }