diff options
author | David N. Welton <davidw@dedasys.com> | 2009-02-03 10:42:46 (GMT) |
---|---|---|
committer | David N. Welton <davidw@dedasys.com> | 2009-02-04 16:16:45 (GMT) |
commit | 8bf67104a4eb30d50ebee79779cff8f07f52cb40 (patch) | |
tree | 741204735faec411c96672aba4cbd6840d72a37e /generic | |
parent | 049bab0afc7ebd86464af6a9f17ca74948903418 (diff) | |
download | tktreectrl-8bf67104a4eb30d50ebee79779cff8f07f52cb40.zip tktreectrl-8bf67104a4eb30d50ebee79779cff8f07f52cb40.tar.gz tktreectrl-8bf67104a4eb30d50ebee79779cff8f07f52cb40.tar.bz2 |
Added code to attempt to paint 'average height' stripes at the bottom
of trees.
Diffstat (limited to 'generic')
-rw-r--r-- | generic/tkTreeCtrl.h | 3 | ||||
-rw-r--r-- | generic/tkTreeDisplay.c | 21 |
2 files changed, 17 insertions, 7 deletions
diff --git a/generic/tkTreeCtrl.h b/generic/tkTreeCtrl.h index fa60492..96bb93b 100644 --- a/generic/tkTreeCtrl.h +++ b/generic/tkTreeCtrl.h @@ -40,6 +40,8 @@ extern void dbwin_add_interp(Tcl_Interp *interp); #define SELECTION_VISIBLE #define ALLOC_HAX #define DEPRECATED +#define PACKAGE_PATCHLEVEL "/""/"
+#define PACKAGE_NAME "treectrl" typedef struct TreeCtrl TreeCtrl; typedef struct TreeColumn_ *TreeColumn; @@ -407,6 +409,7 @@ struct TreeCtrl int columnTagExpr; /* Enable/disable operators in column tags */ Tcl_Obj* fillStripesObj; /* Enable filling empty space with more stripes. */ int fillStripes; /* Enable filling empty space with more stripes. */ + int iAverageHeight; }; #define TREE_CONF_FONT 0x0001 diff --git a/generic/tkTreeDisplay.c b/generic/tkTreeDisplay.c index fdf887e..2faa444 100644 --- a/generic/tkTreeDisplay.c +++ b/generic/tkTreeDisplay.c @@ -910,6 +910,9 @@ Range_ItemUnderPoint( * May be NULL if x_ is not NULL. */ ) { + + /* Issue occurs with: x:0 y:-1445 W:933 H:7854 */ + RItem *rItem; int x = -666, y = -666; int i, l, u; @@ -1728,6 +1731,7 @@ B_YviewCmd( index = indexMax; offset = Increment_ToOffsetY(tree, index); + if ((index != dInfo->incrementTop) || (tree->yOrigin != offset - Tree_ContentTop(tree))) { dInfo->incrementTop = index; tree->yOrigin = offset - Tree_ContentTop(tree); @@ -4826,9 +4830,6 @@ ComplexWhitespace( TreeCtrl *tree ) { - if (tree->fillStripes) { - return 1; - } if (tree->columnBgCnt == 0 && TreeColumn_BackgroundCount(tree->columnTail) == 0) { @@ -4838,7 +4839,7 @@ ComplexWhitespace( if (!tree->vertical || tree->wrapMode != TREE_WRAP_NONE) { return 0; } - if (tree->itemHeight <= 0 && tree->minItemHeight <= 0) { + if (tree->itemHeight <= 0 && tree->minItemHeight <= 0 && !tree->fillStripes) { return 0; } @@ -4856,6 +4857,9 @@ float Tree_AverageItemHeight(TreeDInfo dInfo) { averageRowHeight += dItem->height; cnt ++; } + if (cnt == 0) { + return 0; + } return averageRowHeight / cnt; } @@ -4910,15 +4914,18 @@ DrawWhitespace( top = MAX(y + Tree_TotalHeight(tree), Tree_ContentTop(tree)); bottom = Tree_ContentBottom(tree); + tree->iAverageHeight = Tree_AverageItemHeight(dInfo); + /* Figure out the height of each row of color below the items. */ + if (tree->backgroundMode == BG_MODE_COLUMN) { height = bottom - top; /* solid block of color */ } else if (tree->itemHeight > 0) { height = tree->itemHeight; - } else if (tree->minItemHeight) { - height = tree->minItemHeight; + } else if (tree->iAverageHeight) { + height = tree->iAverageHeight; } else { - height = Tree_AverageItemHeight(dInfo); + height = tree->minItemHeight; } columnRgn = Tree_GetRegion(tree); |