diff options
author | treectrl <treectrl> | 2004-07-26 17:32:28 (GMT) |
---|---|---|
committer | treectrl <treectrl> | 2004-07-26 17:32:28 (GMT) |
commit | 0d78872bcbd0fff4a45ff3823043ccf5f5790c21 (patch) | |
tree | e88e17806fe44ff38c805e0ad70c5ca25dbb8893 /generic | |
parent | 9b9b87d748ce68681054147cc0064eb26300994b (diff) | |
download | tktreectrl-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.c | 22 |
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) |