From: H.G.Muller Date: Tue, 21 Oct 2014 16:41:03 +0000 (+0200) Subject: Base new square size on board widget allocation GTK X-Git-Url: http://winboard.nl/cgi-bin?p=xboard.git;a=commitdiff_plain;h=ba019e81ec80db307f6a4e1fcd07f4fe259766b4 Base new square size on board widget allocation GTK No longer pay attention to the size of the top-level window, but base everything on the size of the board widget itself. --- diff --git a/gtk/xboard.c b/gtk/xboard.c index e2a3237..8d8311b 100644 --- a/gtk/xboard.c +++ b/gtk/xboard.c @@ -1657,20 +1657,17 @@ ReSize (WindowPlacement *wp) GtkAllocation a; int sqx, sqy, w, h, hc, lg = lineGap; static int first = 1; - gtk_widget_get_allocation(optList[W_WHITE].handle, &a); - hc = a.height; // clock height can depend on single / double line clock text! -// if(clockKludge && hc != clockKludge) wp->height += hc - clockKludge, clockKludge = 0; - wpMain.height = BOARD_HEIGHT * (squareSize + lineGap) + lineGap + marginH + hc; - if(wp->width == wpMain.width && wp->height == wpMain.height) return; // not sized - sqx = (wp->width - lg - marginW) / BOARD_WIDTH - lg; - sqy = (wp->height - lg - marginH - hc) / BOARD_HEIGHT - lg; + gtk_widget_get_allocation(optList[W_BOARD].handle, &a); + if(wp->width == wpMain.width && wp->height == wpMain.height && !first) return; // not sized + sqx = (a.width - lg) / BOARD_WIDTH - lg; + sqy = (a.height - lg) / BOARD_HEIGHT - lg; if(sqy < sqx) sqx = sqy; if(sqx < 20) return; if(appData.overrideLineGap < 0) { // do second iteration with adjusted lineGap int oldSqx = sqx; lg = lineGap = sqx < 37 ? 1 : sqx < 59 ? 2 : sqx < 116 ? 3 : 4; - sqx = (wp->width - lg - marginW) / BOARD_WIDTH - lg; - sqy = (wp->height - lg - marginH - hc) / BOARD_HEIGHT - lg; + sqx = (a.width - lg) / BOARD_WIDTH - lg; + sqy = (a.height - lg) / BOARD_HEIGHT - lg; if(sqy < sqx) sqx = sqy; 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 @@ -1696,7 +1693,7 @@ DragProc () if(busy) return; busy = 1; -// GetActualPlacement(shellWidget, &wpNew); + GetActualPlacement(shellWidget, &wpNew); if(wpNew.x == wpMain.x && wpNew.y == wpMain.y && // not moved wpNew.width == wpMain.width && wpNew.height == wpMain.height) { // not sized busy = 0; return; // false alarm