summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authorDavid N. Welton <davidw@dedasys.com>2009-02-03 10:42:46 (GMT)
committerDavid N. Welton <davidw@dedasys.com>2009-02-04 16:16:45 (GMT)
commit8bf67104a4eb30d50ebee79779cff8f07f52cb40 (patch)
tree741204735faec411c96672aba4cbd6840d72a37e /generic
parent049bab0afc7ebd86464af6a9f17ca74948903418 (diff)
downloadtktreectrl-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.h3
-rw-r--r--generic/tkTreeDisplay.c21
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);