diff options
author | treectrl <treectrl> | 2004-10-24 18:33:00 (GMT) |
---|---|---|
committer | treectrl <treectrl> | 2004-10-24 18:33:00 (GMT) |
commit | 82b0f5901d23eaa1563b247ba8ef291a8b7a63f8 (patch) | |
tree | 03f4d472a66bd53059b54a799dc61cf7f730c1c4 /generic | |
parent | 5868ab26c9cd6aa712c8d07daf4732702cf8b21c (diff) | |
download | tktreectrl-82b0f5901d23eaa1563b247ba8ef291a8b7a63f8.zip tktreectrl-82b0f5901d23eaa1563b247ba8ef291a8b7a63f8.tar.gz tktreectrl-82b0f5901d23eaa1563b247ba8ef291a8b7a63f8.tar.bz2 |
Fix whitespace scrolling.
Diffstat (limited to 'generic')
-rw-r--r-- | generic/tkTreeDisplay.c | 47 |
1 files changed, 18 insertions, 29 deletions
diff --git a/generic/tkTreeDisplay.c b/generic/tkTreeDisplay.c index a91572d..8852cda 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.15 2004/10/09 22:54:44 hobbs2 Exp $ + * RCS: @(#) $Id: tkTreeDisplay.c,v 1.16 2004/10/24 18:33:00 treectrl Exp $ */ #include "tkTreeCtrl.h" @@ -2217,7 +2217,8 @@ static void ScrollHorizontalSimple(TreeCtrl *tree) { DInfo *dInfo = (DInfo *) tree->dInfo; DItem *dItem; - TkRegion damageRgn; + TkRegion rgn, damageRgn; + XRectangle rect; int minX, minY, maxX, maxY; int width, offset; int x, y; @@ -2227,11 +2228,6 @@ static void ScrollHorizontalSimple(TreeCtrl *tree) minY = tree->inset + Tree_HeaderHeight(tree); maxY = Tk_Height(tree->tkwin) - tree->inset; -/* We only scroll the content, not the whitespace */ -y = 0 - tree->yOrigin + Tree_TotalHeight(tree); -if (y < maxY) - maxY = y; - /* Horizontal scrolling */ if (dInfo->xOrigin != tree->xOrigin) { @@ -2263,12 +2259,7 @@ if (y < maxY) dItem->oldX = dItem->x; } - /* Copy */ damageRgn = TkCreateRegion(); -#if 1 - { - TkRegion rgn; - XRectangle rect; /* Offset and clip the whitespace region */ Tk_OffsetRegion(dInfo->wsRgn, offset, 0); @@ -2278,10 +2269,13 @@ if (y < maxY) rect.width = maxX - minX; rect.height = maxY - minY; TkUnionRectWithRegion(&rect, rgn, damageRgn); - TkIntersectRegion(dInfo->wsRgn, rgn, dInfo->wsRgn); + TkIntersectRegion(dInfo->wsRgn, damageRgn, dInfo->wsRgn); TkDestroyRegion(rgn); - } -#endif + + /* We only scroll the content, not the whitespace */ + y = 0 - tree->yOrigin + Tree_TotalHeight(tree); + if (y < maxY) + maxY = y; if (tree->doubleBuffer == DOUBLEBUFFER_WINDOW) { @@ -2320,7 +2314,8 @@ static void ScrollVerticalSimple(TreeCtrl *tree) { DInfo *dInfo = (DInfo *) tree->dInfo; DItem *dItem; - TkRegion damageRgn; + TkRegion rgn, damageRgn; + XRectangle rect; int minX, minY, maxX, maxY; int height, offset; int x, y; @@ -2330,11 +2325,6 @@ static void ScrollVerticalSimple(TreeCtrl *tree) minY = tree->inset + Tree_HeaderHeight(tree); maxY = Tk_Height(tree->tkwin) - tree->inset; - /* We only scroll the content, not the whitespace */ - x = 0 - tree->xOrigin + Tree_TotalWidth(tree); - if (x < maxX) - maxX = x; - /* Vertical scrolling */ if (dInfo->yOrigin != tree->yOrigin) { @@ -2365,12 +2355,8 @@ static void ScrollVerticalSimple(TreeCtrl *tree) { dItem->oldY = dItem->y; } - /* Copy */ + damageRgn = TkCreateRegion(); -#if 1 - { - TkRegion rgn; - XRectangle rect; /* Offset and clip the whitespace region */ Tk_OffsetRegion(dInfo->wsRgn, 0, offset); @@ -2380,10 +2366,13 @@ static void ScrollVerticalSimple(TreeCtrl *tree) rect.width = maxX - minX; rect.height = maxY - minY; TkUnionRectWithRegion(&rect, rgn, damageRgn); - TkIntersectRegion(dInfo->wsRgn, rgn, dInfo->wsRgn); + TkIntersectRegion(dInfo->wsRgn, damageRgn, dInfo->wsRgn); TkDestroyRegion(rgn); - } -#endif + + /* We only scroll the content, not the whitespace */ + x = 0 - tree->xOrigin + Tree_TotalWidth(tree); + if (x < maxX) + maxX = x; if (tree->doubleBuffer == DOUBLEBUFFER_WINDOW) { |