diff options
author | treectrl <treectrl> | 2006-11-06 23:45:52 (GMT) |
---|---|---|
committer | treectrl <treectrl> | 2006-11-06 23:45:52 (GMT) |
commit | 4b94ee940d144ae8720f8e4d0d6f6109f5b32747 (patch) | |
tree | 4fb9b6311ff6a94101497f5f508d0e163b49a0c6 | |
parent | 3ae890cc43af33499d379a0dd9c9c15a6e1dac2c (diff) | |
download | tktreectrl-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.c | 18 |
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; } |