summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authortreectrl <treectrl>2004-07-26 17:32:28 (GMT)
committertreectrl <treectrl>2004-07-26 17:32:28 (GMT)
commit0d78872bcbd0fff4a45ff3823043ccf5f5790c21 (patch)
treee88e17806fe44ff38c805e0ad70c5ca25dbb8893 /generic
parent9b9b87d748ce68681054147cc0064eb26300994b (diff)
downloadtktreectrl-0d78872bcbd0fff4a45ff3823043ccf5f5790c21.zip
tktreectrl-0d78872bcbd0fff4a45ff3823043ccf5f5790c21.tar.gz
tktreectrl-0d78872bcbd0fff4a45ff3823043ccf5f5790c21.tar.bz2
Update -defaultstyle widget option when a style is deleted.
Diffstat (limited to 'generic')
-rw-r--r--generic/tkTreeStyle.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/generic/tkTreeStyle.c b/generic/tkTreeStyle.c
index ab078b1..1e9a597 100644
--- a/generic/tkTreeStyle.c
+++ b/generic/tkTreeStyle.c
@@ -2289,6 +2289,28 @@ static void Style_Deleted(TreeCtrl *tree, Style *masterStyle)
}
hPtr = Tcl_NextHashEntry(&search);
}
+
+ /* Update -defaultstyle option */
+ if (tree->defaultStyle.stylesObj != NULL)
+ {
+ Tcl_Obj *stylesObj = tree->defaultStyle.stylesObj;
+ if (Tcl_IsShared(stylesObj))
+ {
+ stylesObj = Tcl_DuplicateObj(stylesObj);
+ Tcl_DecrRefCount(tree->defaultStyle.stylesObj);
+ Tcl_IncrRefCount(stylesObj);
+ tree->defaultStyle.stylesObj = stylesObj;
+ }
+ for (columnIndex = 0; columnIndex < tree->defaultStyle.numStyles; columnIndex++)
+ {
+ Tcl_Obj *emptyObj;
+ if (tree->defaultStyle.styles[columnIndex] != (TreeStyle) masterStyle)
+ continue;
+ tree->defaultStyle.styles[columnIndex] = NULL;
+ emptyObj = Tcl_NewObj();
+ Tcl_ListObjReplace(tree->interp, stylesObj, columnIndex, 1, 1, &emptyObj);
+ }
+ }
}
static void Element_Changed(TreeCtrl *tree, Element *masterElem, int flagM, int flagT, int csM)