summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordkf <donal.k.fellows@manchester.ac.uk>2003-05-21 15:30:59 (GMT)
committerdkf <donal.k.fellows@manchester.ac.uk>2003-05-21 15:30:59 (GMT)
commitd3db5961e94351eb876bbe09cc75822a98464b6a (patch)
tree011b9df6bf2b13e6af3da7a024567e6129761a4b
parentfe602f5a24681408ee16726ec05ac74f8ead5a7e (diff)
downloadtk-d3db5961e94351eb876bbe09cc75822a98464b6a.zip
tk-d3db5961e94351eb876bbe09cc75822a98464b6a.tar.gz
tk-d3db5961e94351eb876bbe09cc75822a98464b6a.tar.bz2
The panedwindow widget now sizes right around unmapped windows. [Bug 738143]
-rw-r--r--ChangeLog3
-rw-r--r--generic/tkPanedWindow.c13
-rw-r--r--tests/panedwindow.test12
3 files changed, 24 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index ca115de..726ac6a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2003-05-21 Donal K. Fellows <fellowsd@cs.man.ac.uk>
+ * generic/tkPanedWindow.c (PanedWindowReqProc): Thanks very much
+ to Eric Boudaillier for making panes resize correctly! [Bug 738143]
+
* generic/tkText.c (TextSearchCmd): Forwards and backwards aren't
the same. [Bug 740558] Also edited SearchCore to get it closer
to the Engineering Manual style guidelines.
diff --git a/generic/tkPanedWindow.c b/generic/tkPanedWindow.c
index a096c75..9d72509 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.13 2003/02/21 11:48:54 dkf Exp $
+ * RCS: @(#) $Id: tkPanedWindow.c,v 1.14 2003/05/21 15:31:01 dkf Exp $
*/
#include "tkPort.h"
@@ -1518,14 +1518,21 @@ PanedWindowReqProc(clientData, tkwin)
Tk_Window tkwin; /* Other Tk-related information
* about the window. */
{
- Slave *panePtr = (Slave *) clientData;
- PanedWindow *pwPtr = (PanedWindow *) (panePtr->masterPtr);
+ Slave *slavePtr = (Slave *) clientData;
+ PanedWindow *pwPtr = (PanedWindow *) (slavePtr->masterPtr);
if (Tk_IsMapped(pwPtr->tkwin)) {
if (!(pwPtr->flags & RESIZE_PENDING)) {
pwPtr->flags |= RESIZE_PENDING;
Tcl_DoWhenIdle(ArrangePanes, (ClientData) pwPtr);
}
} else {
+ int doubleBw = 2 * Tk_Changes(slavePtr->tkwin)->border_width;
+ if (slavePtr->width <= 0) {
+ slavePtr->paneWidth = Tk_ReqWidth(slavePtr->tkwin) + doubleBw;
+ }
+ if (slavePtr->height <= 0) {
+ slavePtr->paneHeight = Tk_ReqHeight(slavePtr->tkwin) + doubleBw;
+ }
ComputeGeometry(pwPtr);
}
}
diff --git a/tests/panedwindow.test b/tests/panedwindow.test
index 0da6bbc..70e0e7c 100644
--- a/tests/panedwindow.test
+++ b/tests/panedwindow.test
@@ -6,7 +6,7 @@
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
-# RCS: @(#) $Id: panedwindow.test,v 1.9 2003/04/01 21:06:49 dgp Exp $
+# RCS: @(#) $Id: panedwindow.test,v 1.10 2003/05/21 15:31:01 dkf Exp $
package require tcltest 2.1
eval tcltest::configure $argv
@@ -1883,6 +1883,16 @@ test panedwindow-23.1 {PanedWindowReqProc, react to slave geometry changes} {
destroy .p .f1 .f2
set result
} {40 80}
+test panedwindow-23.2 {PanedWindowReqProc, react to slave geometry changes} {
+ panedwindow .p -orient horizontal -sashpad 0 -sashwidth 2
+ .p add [frame .f1 -width 10] [frame .f2 -width 10]
+ set result [winfo reqwidth .p]
+ .f1 configure -width 20
+ lappend result [winfo reqwidth .p]
+ destroy .p .f1 .f2
+ set result
+} {32 42}
+
test panedwindow-24.1 {ConfigurePanes, can't add panedwindow to itself} {
panedwindow .p