summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--generic/tkTreeColumn.c19
-rw-r--r--generic/tkTreeDrag.c17
-rw-r--r--generic/tkTreeMarquee.c17
-rw-r--r--generic/tkTreeStyle.c18
4 files changed, 30 insertions, 41 deletions
diff --git a/generic/tkTreeColumn.c b/generic/tkTreeColumn.c
index 23eefd0..8feb412 100644
--- a/generic/tkTreeColumn.c
+++ b/generic/tkTreeColumn.c
@@ -50,6 +50,7 @@ struct Column
int arrowGravity; /* -arrowgravity */
TreeCtrl *tree;
+ Tk_OptionTable optionTable;
int index; /* column number */
int textLen;
int textWidth;
@@ -176,8 +177,6 @@ static Tk_OptionSpec columnSpecs[] = {
(char *) NULL, 0, -1, 0, 0, 0}
};
-static Tk_OptionTable columnOptionTable = NULL;
-
/* Called when Tk_Image is deleted or modified */
static void ImageChangedProc(
ClientData clientData,
@@ -288,7 +287,7 @@ static int Column_Config(Column *column, int objc, Tcl_Obj *CONST objv[])
{
if (error == 0)
{
- if (Tk_SetOptions(tree->interp, (char *) column, columnOptionTable,
+ if (Tk_SetOptions(tree->interp, (char *) column, column->optionTable,
objc, objv, tree->tkwin, &savedOptions, &mask) != TCL_OK)
{
mask = 0;
@@ -500,13 +499,11 @@ static Column *Column_Alloc(TreeCtrl *tree)
{
Column *column;
- if (columnOptionTable == NULL)
- columnOptionTable = Tk_CreateOptionTable(tree->interp, columnSpecs);
-
column = (Column *) ckalloc(sizeof(Column));
memset(column, '\0', sizeof(Column));
column->tree = tree;
- if (Tk_InitOptions(tree->interp, (char *) column, columnOptionTable,
+ column->optionTable = Tk_CreateOptionTable(tree->interp, columnSpecs);
+ if (Tk_InitOptions(tree->interp, (char *) column, column->optionTable,
tree->tkwin) != TCL_OK)
{
WFREE(column, Column);
@@ -514,7 +511,7 @@ static Column *Column_Alloc(TreeCtrl *tree)
}
#if 0
if (Tk_SetOptions(header->tree->interp, (char *) column,
- columnOptionTable, 0,
+ column->optionTable, 0,
NULL, header->tree->tkwin, &savedOptions,
(int *) NULL) != TCL_OK)
{
@@ -567,7 +564,7 @@ static Column *Column_Free(Column *column)
Tk_FreeGC(tree->display, column->bitmapGC);
if (column->image != NULL)
Tk_FreeImage(column->image);
- Tk_FreeConfigOptions((char *) column, columnOptionTable, tree->tkwin);
+ Tk_FreeConfigOptions((char *) column, column->optionTable, tree->tkwin);
WFREE(column, Column);
tree->columnCount--;
return next;
@@ -795,7 +792,7 @@ int TreeColumnCmd(ClientData clientData, Tcl_Interp *interp, int objc,
if (TreeColumn_FromObj(tree, objv[3], &column, 0) != TCL_OK)
return TCL_ERROR;
resultObjPtr = Tk_GetOptionValue(interp, (char *) column,
- columnOptionTable, objv[4], tree->tkwin);
+ ((Column *) column)->optionTable, objv[4], tree->tkwin);
if (resultObjPtr == NULL)
return TCL_ERROR;
Tcl_SetObjResult(interp, resultObjPtr);
@@ -820,7 +817,7 @@ int TreeColumnCmd(ClientData clientData, Tcl_Interp *interp, int objc,
0) != TCL_OK)
return TCL_ERROR;
resultObjPtr = Tk_GetOptionInfo(interp, (char *) column,
- columnOptionTable,
+ column->optionTable,
(objc == 4) ? (Tcl_Obj *) NULL : objv[4],
tree->tkwin);
if (resultObjPtr == NULL)
diff --git a/generic/tkTreeDrag.c b/generic/tkTreeDrag.c
index 96a61c2..f4d4dc4 100644
--- a/generic/tkTreeDrag.c
+++ b/generic/tkTreeDrag.c
@@ -12,6 +12,7 @@ struct DragElem
struct DragImage
{
TreeCtrl *tree;
+ Tk_OptionTable optionTable;
int visible;
int x, y; /* offset to draw at in canvas coords */
int bounds[4]; /* bounds of all DragElems */
@@ -28,8 +29,6 @@ static Tk_OptionSpec optionSpecs[] = {
(char *) NULL, 0, -1, 0, 0, 0}
};
-static Tk_OptionTable optionTable = NULL;
-
static DragElem *DragElem_Alloc(DragImage *dragImage)
{
DragElem *elem = (DragElem *) ckalloc(sizeof(DragElem));
@@ -57,13 +56,11 @@ int TreeDragImage_Init(TreeCtrl *tree)
{
DragImage *dragImage;
- if (optionTable == NULL)
- optionTable = Tk_CreateOptionTable(tree->interp, optionSpecs);
-
dragImage = (DragImage *) ckalloc(sizeof(DragImage));
memset(dragImage, '\0', sizeof(DragImage));
dragImage->tree = tree;
- if (Tk_InitOptions(tree->interp, (char *) dragImage, optionTable,
+ dragImage->optionTable = Tk_CreateOptionTable(tree->interp, optionSpecs);
+ if (Tk_InitOptions(tree->interp, (char *) dragImage, dragImage->optionTable,
tree->tkwin) != TCL_OK)
{
WFREE(dragImage, DragImage);
@@ -80,7 +77,7 @@ void TreeDragImage_Free(TreeDragImage dragImage_)
while (elem != NULL)
elem = DragElem_Free(dragImage, elem);
- Tk_FreeConfigOptions((char *) dragImage, optionTable,
+ Tk_FreeConfigOptions((char *) dragImage, dragImage->optionTable,
dragImage->tree->tkwin);
WFREE(dragImage, DragImage);
}
@@ -117,7 +114,7 @@ static int DragImage_Config(DragImage *dragImage, int objc, Tcl_Obj *CONST objv[
Tk_SavedOptions savedOptions;
int mask, result;
- result = Tk_SetOptions(tree->interp, (char *) dragImage, optionTable,
+ result = Tk_SetOptions(tree->interp, (char *) dragImage, dragImage->optionTable,
objc, objv, tree->tkwin, &savedOptions, &mask);
if (result != TCL_OK)
{
@@ -372,7 +369,7 @@ doneAdd:
return TCL_ERROR;
}
resultObjPtr = Tk_GetOptionValue(interp, (char *) dragImage,
- optionTable, objv[3], tree->tkwin);
+ dragImage->optionTable, objv[3], tree->tkwin);
if (resultObjPtr == NULL)
return TCL_ERROR;
Tcl_SetObjResult(interp, resultObjPtr);
@@ -413,7 +410,7 @@ doneAdd:
if (objc <= 4)
{
resultObjPtr = Tk_GetOptionInfo(interp, (char *) dragImage,
- optionTable,
+ dragImage->optionTable,
(objc == 3) ? (Tcl_Obj *) NULL : objv[3],
tree->tkwin);
if (resultObjPtr == NULL)
diff --git a/generic/tkTreeMarquee.c b/generic/tkTreeMarquee.c
index 2e2b7ad..0916aa0 100644
--- a/generic/tkTreeMarquee.c
+++ b/generic/tkTreeMarquee.c
@@ -5,6 +5,7 @@ typedef struct Marquee Marquee;
struct Marquee
{
TreeCtrl *tree;
+ Tk_OptionTable optionTable;
int visible;
int x1, y1, x2, y2;
int onScreen;
@@ -19,19 +20,15 @@ static Tk_OptionSpec optionSpecs[] = {
(char *) NULL, 0, -1, 0, 0, 0}
};
-static Tk_OptionTable optionTable = NULL;
-
int TreeMarquee_Init(TreeCtrl *tree)
{
Marquee *marquee;
- if (optionTable == NULL)
- optionTable = Tk_CreateOptionTable(tree->interp, optionSpecs);
-
marquee = (Marquee *) ckalloc(sizeof(Marquee));
memset(marquee, '\0', sizeof(Marquee));
marquee->tree = tree;
- if (Tk_InitOptions(tree->interp, (char *) marquee, optionTable,
+ marquee->optionTable = Tk_CreateOptionTable(tree->interp, optionSpecs);
+ if (Tk_InitOptions(tree->interp, (char *) marquee, marquee->optionTable,
tree->tkwin) != TCL_OK)
{
WFREE(marquee, Marquee);
@@ -45,7 +42,7 @@ void TreeMarquee_Free(TreeMarquee marquee_)
{
Marquee *marquee = (Marquee *) marquee_;
- Tk_FreeConfigOptions((char *) marquee, optionTable,
+ Tk_FreeConfigOptions((char *) marquee, marquee->optionTable,
marquee->tree->tkwin);
WFREE(marquee, Marquee);
}
@@ -102,7 +99,7 @@ static int Marquee_Config(Marquee *marquee, int objc, Tcl_Obj *CONST objv[])
Tk_SavedOptions savedOptions;
int mask, result;
- result = Tk_SetOptions(tree->interp, (char *) marquee, optionTable,
+ result = Tk_SetOptions(tree->interp, (char *) marquee, marquee->optionTable,
objc, objv, tree->tkwin, &savedOptions, &mask);
if (result != TCL_OK)
{
@@ -180,7 +177,7 @@ int TreeMarqueeCmd(ClientData clientData, Tcl_Interp *interp, int objc,
return TCL_ERROR;
}
resultObjPtr = Tk_GetOptionValue(interp, (char *) marquee,
- optionTable, objv[3], tree->tkwin);
+ marquee->optionTable, objv[3], tree->tkwin);
if (resultObjPtr == NULL)
return TCL_ERROR;
Tcl_SetObjResult(interp, resultObjPtr);
@@ -200,7 +197,7 @@ int TreeMarqueeCmd(ClientData clientData, Tcl_Interp *interp, int objc,
if (objc <= 4)
{
resultObjPtr = Tk_GetOptionInfo(interp, (char *) marquee,
- optionTable,
+ marquee->optionTable,
(objc == 3) ? (Tcl_Obj *) NULL : objv[3],
tree->tkwin);
if (resultObjPtr == NULL)
diff --git a/generic/tkTreeStyle.c b/generic/tkTreeStyle.c
index 1aba771..ab078b1 100644
--- a/generic/tkTreeStyle.c
+++ b/generic/tkTreeStyle.c
@@ -15,6 +15,7 @@ typedef struct ElementLink ElementLink;
struct Style
{
+ Tk_OptionTable optionTable;
Tk_Uid name;
int numElements;
ElementLink *elements;
@@ -80,8 +81,6 @@ static Tk_OptionSpec styleOptionSpecs[] = {
(char *) NULL, 0, -1, 0, (ClientData) NULL, 0}
};
-static Tk_OptionTable styleOptionTable = NULL;
-
struct Layout
{
ElementLink *eLink;
@@ -2772,20 +2771,21 @@ static Style *Style_CreateAndConfig(TreeCtrl *tree, char *name, int objc, Tcl_Ob
style = (Style *) ckalloc(sizeof(Style));
memset(style, '\0', sizeof(Style));
+ style->optionTable = Tk_CreateOptionTable(tree->interp, styleOptionSpecs);
style->name = Tk_GetUid(name);
if (Tk_InitOptions(tree->interp, (char *) style,
- styleOptionTable, tree->tkwin) != TCL_OK)
+ style->optionTable, tree->tkwin) != TCL_OK)
{
WFREE(style, Style);
return NULL;
}
if (Tk_SetOptions(tree->interp, (char *) style,
- styleOptionTable, objc, objv, tree->tkwin,
+ style->optionTable, objc, objv, tree->tkwin,
NULL, NULL) != TCL_OK)
{
- Tk_FreeConfigOptions((char *) style, styleOptionTable, tree->tkwin);
+ Tk_FreeConfigOptions((char *) style, style->optionTable, tree->tkwin);
WFREE(style, Style);
return NULL;
}
@@ -3250,7 +3250,7 @@ int TreeStyleCmd(ClientData clientData, Tcl_Interp *interp, int objc,
if (TreeStyle_FromObj(tree, objv[3], (TreeStyle *) &style) != TCL_OK)
return TCL_ERROR;
resultObjPtr = Tk_GetOptionValue(interp, (char *) style,
- styleOptionTable, objv[4], tree->tkwin);
+ style->optionTable, objv[4], tree->tkwin);
if (resultObjPtr == NULL)
return TCL_ERROR;
Tcl_SetObjResult(interp, resultObjPtr);
@@ -3272,7 +3272,7 @@ int TreeStyleCmd(ClientData clientData, Tcl_Interp *interp, int objc,
if (objc <= 5)
{
resultObjPtr = Tk_GetOptionInfo(interp, (char *) style,
- styleOptionTable,
+ style->optionTable,
(objc == 4) ? (Tcl_Obj *) NULL : objv[4],
tree->tkwin);
if (resultObjPtr == NULL)
@@ -3282,7 +3282,7 @@ int TreeStyleCmd(ClientData clientData, Tcl_Interp *interp, int objc,
else
{
if (Tk_SetOptions(tree->interp, (char *) style,
- styleOptionTable, objc - 4, objv + 4, tree->tkwin,
+ style->optionTable, objc - 4, objv + 4, tree->tkwin,
NULL, NULL) != TCL_OK)
return TCL_ERROR;
Style_Changed(tree, style);
@@ -3911,8 +3911,6 @@ int TreeStyle_Init(Tcl_Interp *interp)
{
ElementType *typePtr;
- styleOptionTable = Tk_CreateOptionTable(interp, styleOptionSpecs);
-
elementTypeList = &elemTypeBitmap;
elemTypeBitmap.next = &elemTypeBorder;
elemTypeBorder.next = &elemTypeImage;