summaryrefslogtreecommitdiffstats
path: root/generic/tkGrid.c
diff options
context:
space:
mode:
authorpspjuth <peter.spjuth@gmail.com>2004-02-18 20:10:33 (GMT)
committerpspjuth <peter.spjuth@gmail.com>2004-02-18 20:10:33 (GMT)
commitc65b9b4c74b0c66f1c7988049adcaa1370c95f97 (patch)
tree03cf3cb94726afc1a5ac7ed8873f477221f134f4 /generic/tkGrid.c
parent65aade6bfeead87badb9a2e0c40635bce209538e (diff)
downloadtk-c65b9b4c74b0c66f1c7988049adcaa1370c95f97.zip
tk-c65b9b4c74b0c66f1c7988049adcaa1370c95f97.tar.gz
tk-c65b9b4c74b0c66f1c7988049adcaa1370c95f97.tar.bz2
Fixed a bug in grid geometry calculations for
a shrinking grid. [Bug 899246]
Diffstat (limited to 'generic/tkGrid.c')
-rw-r--r--generic/tkGrid.c30
1 files changed, 14 insertions, 16 deletions
diff --git a/generic/tkGrid.c b/generic/tkGrid.c
index f5c3503..7624537 100644
--- a/generic/tkGrid.c
+++ b/generic/tkGrid.c
@@ -8,7 +8,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkGrid.c,v 1.25 2002/10/10 21:07:51 pspjuth Exp $
+ * RCS: @(#) $Id: tkGrid.c,v 1.25.2.1 2004/02/18 20:10:34 pspjuth Exp $
*/
#include "tkInt.h"
@@ -1271,7 +1271,7 @@ AdjustOffsets(size, slots, slotPtr)
int diff; /* Extra pixels needed to add to the layout. */
int totalWeight = 0; /* Sum of the weights for all the slots. */
int weight = 0; /* Sum of the weights so far. */
- int minSize = 0; /* Minimum possible layout size. */
+ int minSize; /* Minimum possible layout size. */
int newDiff; /* The most pixels that can be added on
* the current pass. */
@@ -1290,7 +1290,7 @@ AdjustOffsets(size, slots, slotPtr)
* there is extra space, else clip on the bottom/right.
*/
- for (slot=0; slot < slots; slot++) {
+ for (slot = 0; slot < slots; slot++) {
totalWeight += slotPtr[slot].weight;
}
@@ -1304,7 +1304,8 @@ AdjustOffsets(size, slots, slotPtr)
*/
if (diff > 0) {
- for (weight=slot=0; slot < slots; slot++) {
+ weight = 0;
+ for (slot = 0; slot < slots; slot++) {
weight += slotPtr[slot].weight;
slotPtr[slot].offset += diff * weight / totalWeight;
}
@@ -1314,16 +1315,19 @@ AdjustOffsets(size, slots, slotPtr)
/*
* The layout must shrink below its requested size. Compute the
* minimum possible size by looking at the slot minSizes.
+ * Store each slot's minimum size in temp.
*/
- for (slot=0; slot < slots; slot++) {
+ minSize = 0;
+ for (slot = 0; slot < slots; slot++) {
if (slotPtr[slot].weight > 0) {
- minSize += slotPtr[slot].minSize;
+ slotPtr[slot].temp = slotPtr[slot].minSize;
} else if (slot > 0) {
- minSize += slotPtr[slot].offset - slotPtr[slot-1].offset;
+ slotPtr[slot].temp = slotPtr[slot].offset - slotPtr[slot-1].offset;
} else {
- minSize += slotPtr[slot].offset;
+ slotPtr[slot].temp = slotPtr[slot].offset;
}
+ minSize += slotPtr[slot].temp;
}
/*
@@ -1334,14 +1338,8 @@ AdjustOffsets(size, slots, slotPtr)
if (size <= minSize) {
int offset = 0;
- for (slot=0; slot < slots; slot++) {
- if (slotPtr[slot].weight > 0) {
- offset += slotPtr[slot].minSize;
- } else if (slot > 0) {
- offset += slotPtr[slot].offset - slotPtr[slot-1].offset;
- } else {
- offset += slotPtr[slot].offset;
- }
+ for (slot = 0; slot < slots; slot++) {
+ offset += slotPtr[slot].temp;
slotPtr[slot].offset = offset;
}
return(0);