diff options
author | dkf <donal.k.fellows@manchester.ac.uk> | 2002-07-31 14:10:55 (GMT) |
---|---|---|
committer | dkf <donal.k.fellows@manchester.ac.uk> | 2002-07-31 14:10:55 (GMT) |
commit | 8dd5c32785f13f36633b81a30186b977d740bf8b (patch) | |
tree | 72e2f2fed5f6061a545aea89677902efe6f84bec | |
parent | 5436e993cdf88474bf2f8c3a80a5b7dfcf3af3e1 (diff) | |
download | tk-8dd5c32785f13f36633b81a30186b977d740bf8b.zip tk-8dd5c32785f13f36633b81a30186b977d740bf8b.tar.gz tk-8dd5c32785f13f36633b81a30186b977d740bf8b.tar.bz2 |
Postpone paned-window layout arrangement on geometry event until idle,
as is done in other window managers, to fix problems with size
calculations when the children don't already know their sizes anyway.
Now the layout of the vertical pane demo works better (overall initial
window width is right!)
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | generic/tkPanedWindow.c | 9 |
2 files changed, 16 insertions, 3 deletions
@@ -1,3 +1,13 @@ +2002-07-31 Donal K. Fellows <fellowsd@cs.man.ac.uk> + + * generic/tkPanedWindow.c (PanedWindowReqProc): Postpone pane + arrangement until idle, as is done in other window managers, to + fix problems with size calculations when the children don't + already know their sizes anyway. + + * unix/configure: Regen. + * unix/tcl.m4: Update from Tcl. + 2002-07-29 Mo DeJong <mdejong@users.sourceforge.net> * unix/configure: Regen. diff --git a/generic/tkPanedWindow.c b/generic/tkPanedWindow.c index be14e9c..3e9cd4d 100644 --- a/generic/tkPanedWindow.c +++ b/generic/tkPanedWindow.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkPanedWindow.c,v 1.4 2002/06/19 23:17:17 hobbs Exp $ + * RCS: @(#) $Id: tkPanedWindow.c,v 1.5 2002/07/31 14:10:56 dkf Exp $ */ #include "tkPort.h" @@ -1501,7 +1501,10 @@ PanedWindowReqProc(clientData, tkwin) { Slave *panePtr = (Slave *) clientData; PanedWindow *pwPtr = (PanedWindow *) (panePtr->masterPtr); - ComputeGeometry(pwPtr); + if (!(pwPtr->flags & REQUESTED_RELAYOUT)) { + pwPtr->flags |= REQUESTED_RELAYOUT; + Tcl_DoWhenIdle(ArrangePanes, (ClientData) pwPtr); + } } /* @@ -1810,7 +1813,7 @@ ComputeGeometry(pwPtr) int i, x, y, doubleBw, internalBw; int reqWidth, reqHeight, sashWidth, sxOff, syOff, hxOff, hyOff, dim; Slave *slavePtr; - + pwPtr->flags |= REQUESTED_RELAYOUT; x = y = internalBw = Tk_InternalBorderWidth(pwPtr->tkwin); |