From d7401f45af975eca82facb81e04b925d4e8ed6e6 Mon Sep 17 00:00:00 2001 From: H.G. Muller Date: Sun, 21 Oct 2012 10:40:37 +0200 Subject: [PATCH] Fix bug in resizing The nominal size of the window was not set in the correct Option struct. --- xboard.c | 4 ++-- xoptions.c | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/xboard.c b/xboard.c index 3e8de0b..69079be 100644 --- a/xboard.c +++ b/xboard.c @@ -1736,8 +1736,8 @@ ReSize (WindowPlacement *wp) } else ResizeBoardWindow(BOARD_WIDTH * (squareSize + lineGap) + lineGap, BOARD_HEIGHT * (squareSize + lineGap) + lineGap, 0); w = BOARD_WIDTH * (squareSize + lineGap) + lineGap; h = BOARD_HEIGHT * (squareSize + lineGap) + lineGap; - if(optList->max > w) optList->max = w; - if(optList->value > h) optList->value = h; + if(optList[W_BOARD].max > w) optList[W_BOARD].max = w; + if(optList[W_BOARD].value > h) optList[W_BOARD].value = h; } static XtIntervalId delayedDragID = 0; diff --git a/xoptions.c b/xoptions.c index bf1ff10..097f881 100644 --- a/xoptions.c +++ b/xoptions.c @@ -551,10 +551,12 @@ GraphEventProc(Widget widget, caddr_t client_data, XEvent *event) XtSetArg(args[j], XtNwidth, &w); j++; XtSetArg(args[j], XtNheight, &h); j++; XtGetValues(widget, args, j); + if(w < graph->max || w > graph->max + 1 || h != graph->value) { // use width fudge of 1 pixel - sizing = (((XExposeEvent*)event)->count >= 0); // suppress sizing on ordered redraw in response to sizing. + sizing = (((XExposeEvent*)event)->count >= 0); // suppress sizing on expose for ordered redraw in response to sizing. graph->max = w; graph->value = h; // note: old values are kept if we we don't exceed width fudge - } + } else w = graph->max; + if(sizing && ((XExposeEvent*)event)->count > 0) { graph->max = 0; return; } // don't bother if further exposure is pending during resize if(!graph->textValue || sizing) { // create surfaces of new size for display widget if(graph->textValue) cairo_surface_destroy((cairo_surface_t *)graph->textValue); -- 1.7.0.4