summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortreectrl <treectrl>2006-11-06 23:45:52 (GMT)
committertreectrl <treectrl>2006-11-06 23:45:52 (GMT)
commit4b94ee940d144ae8720f8e4d0d6f6109f5b32747 (patch)
tree4fb9b6311ff6a94101497f5f508d0e163b49a0c6
parent3ae890cc43af33499d379a0dd9c9c15a6e1dac2c (diff)
downloadtktreectrl-4b94ee940d144ae8720f8e4d0d6f6109f5b32747.zip
tktreectrl-4b94ee940d144ae8720f8e4d0d6f6109f5b32747.tar.gz
tktreectrl-4b94ee940d144ae8720f8e4d0d6f6109f5b32747.tar.bz2
Keep an array of column indexes for each item that has at least one span > 1. This is to avoid constantly recalculating the list of spans for displayed items. The list of spans is recalculated whenever [item span] changes a span, or whenever a column is created/deleted/moved or has its -lock or -visible option changed.
-rw-r--r--generic/tkTreeColumn.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/generic/tkTreeColumn.c b/generic/tkTreeColumn.c
index eca2ba7..fa6ce4b 100644
--- a/generic/tkTreeColumn.c
+++ b/generic/tkTreeColumn.c
@@ -7,7 +7,7 @@
* Copyright (c) 2002-2003 Christian Krone
* Copyright (c) 2003 ActiveState Corporation
*
- * RCS: @(#) $Id: tkTreeColumn.c,v 1.56 2006/11/03 22:30:34 treectrl Exp $
+ * RCS: @(#) $Id: tkTreeColumn.c,v 1.57 2006/11/06 23:45:52 treectrl Exp $
*/
#include "tkTreeCtrl.h"
@@ -1874,6 +1874,10 @@ Column_Move(
hPtr = Tcl_NextHashEntry(&search);
}
+#ifdef NEW_SPAN_CODE
+ TreeItem_SpansInvalidate(tree, NULL);
+#endif
+
#ifdef DEPRECATED
/* Re-order -defaultstyle */
numStyles = tree->defaultStyle.numStyles;
@@ -2041,6 +2045,7 @@ Column_Config(
XGCValues gcValues;
unsigned long gcMask;
/* int stateOld = Column_MakeState(column), stateNew;*/
+ int visible = column->visible;
#ifdef COLUMN_LOCK
int lock = column->lock;
#endif
@@ -2180,6 +2185,11 @@ Column_Config(
}
}
+#ifdef NEW_SPAN_CODE
+ if (visible != column->visible || lock != column->lock)
+ TreeItem_SpansInvalidate(tree, NULL);
+#endif
+
/* Wouldn't have to do this if Tk_InitOptions() would return
* a mask of configured options like Tk_SetOptions() does. */
if (createFlag) {
@@ -3924,6 +3934,9 @@ TreeColumnCmd(
}
#endif
+#ifdef NEW_SPAN_CODE
+ TreeItem_SpansInvalidate(tree, NULL);
+#endif
Tree_DInfoChanged(tree, DINFO_REDO_COLUMN_WIDTH);
Tcl_SetObjResult(interp, TreeColumn_ToObj(tree, (TreeColumn) column));
break;
@@ -4063,6 +4076,9 @@ doneDELETE:
TreeItemList_Free(&columns);
if (objc == 5)
TreeItemList_Free(&column2s);
+#ifdef NEW_SPAN_CODE
+ TreeItem_SpansInvalidate(tree, NULL);
+#endif
break;
}