From 80e9bf379a3178ea54405c0d9d6d3954292dcef4 Mon Sep 17 00:00:00 2001 From: treectrl Date: Mon, 6 Nov 2006 02:51:24 +0000 Subject: Fixed item background colors not drawing over the whole item in some cases. --- generic/tkTreeItem.c | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/generic/tkTreeItem.c b/generic/tkTreeItem.c index 0936c4a..1344e94 100644 --- a/generic/tkTreeItem.c +++ b/generic/tkTreeItem.c @@ -5,7 +5,7 @@ * * Copyright (c) 2002-2006 Tim Baker * - * RCS: @(#) $Id: tkTreeItem.c,v 1.77 2006/11/06 01:54:09 treectrl Exp $ + * RCS: @(#) $Id: tkTreeItem.c,v 1.78 2006/11/06 02:51:24 treectrl Exp $ */ #include "tkTreeCtrl.h" @@ -3926,17 +3926,25 @@ SpanWalkProc_Draw( drawArgs->drawable = data->drawable; /* Draw background colors. */ - x = drawArgs->x; - for (i = 0; i < spanPtr->span; i++) { - int columnWidth = TreeColumn_UseWidth(treeColumn); - if ((columnWidth > 0) && (x < data->maxX) && - (x + columnWidth > data->minX)) { - ItemDrawBackground(tree, treeColumn, (Item *) item_, itemColumn, - drawArgs->drawable, x, drawArgs->y, - columnWidth, drawArgs->height, data->index); - } - x += columnWidth; - treeColumn = TreeColumn_Next(treeColumn); + if (spanPtr->span == 1) { + /* Important point: use drawArgs->width since an item's width may + * be totally different than tree->columnVis' width. */ + ItemDrawBackground(tree, treeColumn, (Item *) item_, itemColumn, + drawArgs->drawable, drawArgs->x, drawArgs->y, + drawArgs->width, drawArgs->height, data->index); + } else { + x = drawArgs->x; + for (i = 0; i < spanPtr->span; i++) { + int columnWidth = TreeColumn_UseWidth(treeColumn); + if ((columnWidth > 0) && (x < data->maxX) && + (x + columnWidth > data->minX)) { + ItemDrawBackground(tree, treeColumn, (Item *) item_, itemColumn, + drawArgs->drawable, x, drawArgs->y, + columnWidth, drawArgs->height, data->index); + } + x += columnWidth; + treeColumn = TreeColumn_Next(treeColumn); + } } if (drawArgs->style != NULL) { -- cgit v0.12