summaryrefslogtreecommitdiffstats
path: root/generic/tkTreeStyle.c
diff options
context:
space:
mode:
authortreectrl <treectrl>2002-12-23 07:04:24 (GMT)
committertreectrl <treectrl>2002-12-23 07:04:24 (GMT)
commitf6f9f3985bcc42c153678477cdbc912b9bea1561 (patch)
tree358981e034ef9af950cb09c09c539cbaca1cb7e3 /generic/tkTreeStyle.c
parent0354b85d170074a910dd456fc5607e0c2ea8f6ec (diff)
downloadtktreectrl-f6f9f3985bcc42c153678477cdbc912b9bea1561.zip
tktreectrl-f6f9f3985bcc42c153678477cdbc912b9bea1561.tar.gz
tktreectrl-f6f9f3985bcc42c153678477cdbc912b9bea1561.tar.bz2
element delete command works when element is in use.
Diffstat (limited to 'generic/tkTreeStyle.c')
-rw-r--r--generic/tkTreeStyle.c41
1 files changed, 39 insertions, 2 deletions
diff --git a/generic/tkTreeStyle.c b/generic/tkTreeStyle.c
index c1a550e..7a785b6 100644
--- a/generic/tkTreeStyle.c
+++ b/generic/tkTreeStyle.c
@@ -2179,7 +2179,7 @@ static void Style_Deleted(TreeCtrl *tree, Style *masterStyle)
while (column != NULL)
{
Style *style = (Style *) TreeItemColumn_GetStyle(tree, column);
- if ((style != NULL) && ((style == masterStyle) || (style->master == masterStyle)))
+ if ((style != NULL) && (style->master == masterStyle))
{
Tree_InvalidateColumnWidth(tree, columnIndex);
TreeItemColumn_ForgetStyle(tree, column);
@@ -2218,6 +2218,43 @@ static void Element_Changed(TreeCtrl *tree, Element *masterElem, int flagM, int
}
}
+static void Element_Deleted(TreeCtrl *tree, Element *masterElem)
+{
+ Tcl_HashEntry *hPtr;
+ Tcl_HashSearch search;
+ Style *masterStyle;
+ ElementLink *eLink;
+ int i, j;
+
+ hPtr = Tcl_FirstHashEntry(&tree->styleHash, &search);
+ while (hPtr != NULL)
+ {
+ masterStyle = (Style *) Tcl_GetHashValue(hPtr);
+ for (i = 0; i < masterStyle->numElements; i++)
+ {
+ eLink = &masterStyle->elements[i];
+ if (eLink->elem == masterElem)
+ {
+ Element *elemList[20];
+ int elemMap[20];
+
+ for (j = 0; j < masterStyle->numElements; j++)
+ {
+ if (j == i)
+ continue;
+ elemList[(j < i) ? j : (j - 1)] =
+ masterStyle->elements[j].elem;
+ elemMap[(j < i) ? j : (j - 1)] = j;
+ }
+ Style_ChangeElements(tree, masterStyle,
+ masterStyle->numElements - 1, elemList, elemMap);
+ break;
+ }
+ }
+ hPtr = Tcl_NextHashEntry(&search);
+ }
+}
+
void TreeStyle_TreeChanged(TreeCtrl *tree, int flagT)
{
Tcl_HashEntry *hPtr;
@@ -2567,7 +2604,7 @@ int TreeElementCmd(ClientData clientData, Tcl_Interp *interp, int objc,
{
if (Element_FromObj(tree, objv[i], &elem) != TCL_OK)
return TCL_ERROR;
- /* TODO: Mass changes to any Style using this Element */
+ Element_Deleted(tree, elem);
Element_FreeResources(tree, elem);
}
break;