summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortreectrl <treectrl>2004-08-09 02:14:03 (GMT)
committertreectrl <treectrl>2004-08-09 02:14:03 (GMT)
commit472ec142012faad1ec3e95ae67ae099f724794ce (patch)
treebc59aea80221c9f73afc19655d3324f4806236a6
parente32b5785cbe4bb89ac39b6c48aa7b8b54a37b2c9 (diff)
downloadtktreectrl-472ec142012faad1ec3e95ae67ae099f724794ce.zip
tktreectrl-472ec142012faad1ec3e95ae67ae099f724794ce.tar.gz
tktreectrl-472ec142012faad1ec3e95ae67ae099f724794ce.tar.bz2
Fix bug with whitespace not always being erased.
Change how columnWidthSize is reallocated.
-rw-r--r--generic/tkTreeDisplay.c44
1 files changed, 40 insertions, 4 deletions
diff --git a/generic/tkTreeDisplay.c b/generic/tkTreeDisplay.c
index 2ef246b..fe26222 100644
--- a/generic/tkTreeDisplay.c
+++ b/generic/tkTreeDisplay.c
@@ -5,7 +5,7 @@
*
* Copyright (c) 2002-2004 Tim Baker
*
- * RCS: @(#) $Id: tkTreeDisplay.c,v 1.13 2004/07/30 20:59:31 treectrl Exp $
+ * RCS: @(#) $Id: tkTreeDisplay.c,v 1.14 2004/08/09 02:14:03 treectrl Exp $
*/
#include "tkTreeCtrl.h"
@@ -1968,7 +1968,7 @@ if (tree->debug.enable && tree->debug.display)
dItemHead = UpdateDInfoForRange(tree, dItemHead, range, rItem, x, y);
}
- /* Track this range even if it has no DItems, so we whitespace is
+ /* Track this range even if it has no DItems, so whitespace is
* erased */
if (dInfo->rangeFirstD == NULL)
dInfo->rangeFirstD = range;
@@ -2263,6 +2263,24 @@ if (y < maxY)
dItem->oldX = dItem->x;
}
+#if 1
+ {
+ TkRegion rgn;
+ XRectangle rect;
+
+ /* Offset and clip the whitespace region */
+ Tk_OffsetRegion(dInfo->wsRgn, offset, 0);
+ rgn = TkCreateRegion();
+ rect.x = minX;
+ rect.y = minY;
+ rect.width = maxX - minX;
+ rect.height = maxY - minY;
+ TkUnionRectWithRegion(&rect, rgn, damageRgn);
+ TkIntersectRegion(dInfo->wsRgn, rgn, dInfo->wsRgn);
+ TkDestroyRegion(rgn);
+ }
+#endif
+
if (tree->doubleBuffer == DOUBLEBUFFER_WINDOW)
{
XCopyArea(tree->display, dInfo->pixmap, dInfo->pixmap,
@@ -2346,6 +2364,24 @@ if (x < maxX)
dItem->oldY = dItem->y;
}
+#if 1
+ {
+ TkRegion rgn;
+ XRectangle rect;
+
+ /* Offset and clip the whitespace region */
+ Tk_OffsetRegion(dInfo->wsRgn, 0, offset);
+ rgn = TkCreateRegion();
+ rect.x = minX;
+ rect.y = minY;
+ rect.width = maxX - minX;
+ rect.height = maxY - minY;
+ TkUnionRectWithRegion(&rect, rgn, damageRgn);
+ TkIntersectRegion(dInfo->wsRgn, rgn, dInfo->wsRgn);
+ TkDestroyRegion(rgn);
+ }
+#endif
+
if (tree->doubleBuffer == DOUBLEBUFFER_WINDOW)
{
XCopyArea(tree->display, dInfo->pixmap, dInfo->pixmap,
@@ -2689,9 +2725,9 @@ if (tree->debug.enable && tree->debug.display && 0)
TreeColumn treeColumn = tree->columns;
int columnIndex = 0;
- while (dInfo->columnWidthSize < tree->columnCount)
+ if (dInfo->columnWidthSize < tree->columnCount)
{
- dInfo->columnWidthSize *= 2;
+ dInfo->columnWidthSize = tree->columnCount + 10;
dInfo->columnWidth = (int *) ckrealloc((char *) dInfo->columnWidth,
sizeof(int) * dInfo->columnWidthSize);
}