diff options
Diffstat (limited to 'generic')
-rw-r--r-- | generic/tkTreeDisplay.c | 53 |
1 files changed, 17 insertions, 36 deletions
diff --git a/generic/tkTreeDisplay.c b/generic/tkTreeDisplay.c index 2272642..25286d1 100644 --- a/generic/tkTreeDisplay.c +++ b/generic/tkTreeDisplay.c @@ -5,7 +5,7 @@ * * Copyright (c) 2002-2006 Tim Baker * - * RCS: @(#) $Id: tkTreeDisplay.c,v 1.78 2006/12/09 01:16:23 treectrl Exp $ + * RCS: @(#) $Id: tkTreeDisplay.c,v 1.79 2006/12/22 04:43:40 treectrl Exp $ */ #include "tkTreeCtrl.h" @@ -3070,7 +3070,8 @@ UpdateDInfoForRange( area->flags |= DITEM_DIRTY | DITEM_ALL_DIRTY; /* Items may have alternating background colors. */ - else if ((tree->columnBgCnt > 1) && ((index % tree->columnBgCnt) != + else if ((tree->columnBgCnt > 1) && + ((index % tree->columnBgCnt) != (dItem->index % tree->columnBgCnt))) area->flags |= DITEM_DIRTY | DITEM_ALL_DIRTY; @@ -3938,15 +3939,16 @@ ScrollHorizontalSimple( /* Move pixels right */ if (offset > 0) { x = minX; - } + dirtyMin = minX; + dirtyMax = maxX - width; + /* Move pixels left */ - else { + } else { x = maxX - width; + dirtyMin = minX + width; + dirtyMax = maxX; } - dirtyMin = minX + width; - dirtyMax = maxX - width; - damageRgn = Tree_GetRegion(tree); if (tree->doubleBuffer == DOUBLEBUFFER_WINDOW) { @@ -3954,10 +3956,6 @@ ScrollHorizontalSimple( tree->copyGC, x, minY, width, maxY - minY, x + offset, minY); - if (offset < 0) - dirtyMax = maxX; - else - dirtyMin = minX; Tree_InvalidateArea(tree, dirtyMin, minY, dirtyMax, maxY); Tree_FreeRegion(tree, damageRgn); return; @@ -3969,14 +3967,7 @@ ScrollHorizontalSimple( Tree_InvalidateRegion(tree, damageRgn); } Tree_FreeRegion(tree, damageRgn); -#ifndef WIN32 - if (offset < 0) - dirtyMax = maxX; - else - dirtyMin = minX; -#endif - if (dirtyMin < dirtyMax) - Tree_InvalidateArea(tree, dirtyMin, minY, dirtyMax, maxY); + Tree_InvalidateArea(tree, dirtyMin, minY, dirtyMax, maxY); } /* @@ -4046,15 +4037,16 @@ ScrollVerticalSimple( /* Move pixels down */ if (offset > 0) { y = minY; - } + dirtyMin = minY; + dirtyMax = maxY - height; + /* Move pixels up */ - else { + } else { y = maxY - height; + dirtyMin = minY + height; + dirtyMax = maxY; } - dirtyMin = minY + height; - dirtyMax = maxY - height; - damageRgn = Tree_GetRegion(tree); if (tree->doubleBuffer == DOUBLEBUFFER_WINDOW) { @@ -4062,10 +4054,6 @@ ScrollVerticalSimple( tree->copyGC, minX, y, maxX - minX, height, minX, y + offset); - if (offset < 0) - dirtyMax = maxY; - else - dirtyMin = minY; Tree_InvalidateArea(tree, minX, dirtyMin, maxX, dirtyMax); Tree_FreeRegion(tree, damageRgn); return; @@ -4077,14 +4065,7 @@ ScrollVerticalSimple( Tree_InvalidateRegion(tree, damageRgn); } Tree_FreeRegion(tree, damageRgn); -#ifndef WIN32 - if (offset < 0) - dirtyMax = maxY; - else - dirtyMin = minY; -#endif - if (dirtyMin < dirtyMax) - Tree_InvalidateArea(tree, minX, dirtyMin, maxX, dirtyMax); + Tree_InvalidateArea(tree, minX, dirtyMin, maxX, dirtyMax); } /* |