diff options
author | treectrl <treectrl> | 2005-06-29 21:12:18 (GMT) |
---|---|---|
committer | treectrl <treectrl> | 2005-06-29 21:12:18 (GMT) |
commit | 0153f26f03b74de133819be5dbaca1d75f01f5b0 (patch) | |
tree | 531171e7de7353d6ef48f8bca841ffedcedda207 /generic | |
parent | 69a515bd8c3b90321e55df577b10168506781b6a (diff) | |
download | tktreectrl-0153f26f03b74de133819be5dbaca1d75f01f5b0.zip tktreectrl-0153f26f03b74de133819be5dbaca1d75f01f5b0.tar.gz tktreectrl-0153f26f03b74de133819be5dbaca1d75f01f5b0.tar.bz2 |
UpdateDInfoForRange: Items were not being redisplayed properly if they moved to a different-sized range.
Diffstat (limited to 'generic')
-rw-r--r-- | generic/tkTreeDisplay.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/generic/tkTreeDisplay.c b/generic/tkTreeDisplay.c index b7c6aa8..b6db095 100644 --- a/generic/tkTreeDisplay.c +++ b/generic/tkTreeDisplay.c @@ -5,7 +5,7 @@ * * Copyright (c) 2002-2005 Tim Baker * - * RCS: @(#) $Id: tkTreeDisplay.c,v 1.28 2005/06/08 01:24:30 treectrl Exp $ + * RCS: @(#) $Id: tkTreeDisplay.c,v 1.29 2005/06/29 21:12:18 treectrl Exp $ */ #include "tkTreeCtrl.h" @@ -1621,11 +1621,14 @@ UpdateDInfoForRange(TreeCtrl *tree, DItem *dItemHead, /* Re-use a previously allocated DItem */ if (dItem != NULL) { dItemHead = DItem_Unlink(dItemHead, dItem); + + /* All display info is marked as invalid */ if (dInfo->flags & DINFO_INVALIDATE) dItem->flags |= DITEM_DIRTY | DITEM_ALL_DIRTY; - /* Range height may have changed due to an item resizing */ - else if (dItem->width != range->totalWidth) + /* The range may have changed size */ + else if ((dItem->width != range->totalWidth) || + (dItem->height != rItem->size)) dItem->flags |= DITEM_DIRTY | DITEM_ALL_DIRTY; /* Items may have alternating background colors. */ @@ -1719,12 +1722,14 @@ UpdateDInfoForRange(TreeCtrl *tree, DItem *dItemHead, /* Re-use a previously allocated DItem */ if (dItem != NULL) { dItemHead = DItem_Unlink(dItemHead, dItem); + + /* All display info is marked as invalid */ if (dInfo->flags & DINFO_INVALIDATE) dItem->flags |= DITEM_DIRTY | DITEM_ALL_DIRTY; - /* If another item changed size, it may affect the - * height/width of this range */ - else if (dItem->height != range->totalHeight) + /* The range may have changed size */ + else if ((dItem->width != rItem->size) || + (dItem->height != range->totalHeight)) dItem->flags |= DITEM_DIRTY | DITEM_ALL_DIRTY; /* Items may have alternating background colors. */ |