summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authortreectrl <treectrl>2003-01-01 21:47:33 (GMT)
committertreectrl <treectrl>2003-01-01 21:47:33 (GMT)
commitf77145114029ea7a673fe3da5cf2e854a3641498 (patch)
treea30ebb80e247c0829a352b438a989d5885121f9c /generic
parent2c70a144a697dec422f43337049c0629cec54bb2 (diff)
downloadtktreectrl-f77145114029ea7a673fe3da5cf2e854a3641498.zip
tktreectrl-f77145114029ea7a673fe3da5cf2e854a3641498.tar.gz
tktreectrl-f77145114029ea7a673fe3da5cf2e854a3641498.tar.bz2
Fix for problems when configure fails.
Diffstat (limited to 'generic')
-rw-r--r--generic/tkTreeColumn.c11
-rw-r--r--generic/tkTreeElem.c66
2 files changed, 60 insertions, 17 deletions
diff --git a/generic/tkTreeColumn.c b/generic/tkTreeColumn.c
index c987a3e..9b796ce 100644
--- a/generic/tkTreeColumn.c
+++ b/generic/tkTreeColumn.c
@@ -311,6 +311,14 @@ static int Column_Config(Column *column, int objc, Tcl_Obj *CONST objv[])
continue;
}
+ if (mask & COLU_CONF_IMAGE)
+ saved.image = column->image;
+ if (mask & COLU_CONF_ITEMBG)
+ {
+ saved.itemBgColor = column->itemBgColor;
+ saved.itemBgCount = column->itemBgCount;
+ }
+
if ((mask & COLU_CONF_TAG) && (column->tag != NULL))
{
if (column->index == -1)
@@ -343,7 +351,6 @@ static int Column_Config(Column *column, int objc, Tcl_Obj *CONST objv[])
if (mask & COLU_CONF_IMAGE)
{
- saved.image = column->image;
column->image = NULL;
if (column->imageString != NULL)
{
@@ -357,8 +364,6 @@ static int Column_Config(Column *column, int objc, Tcl_Obj *CONST objv[])
if (mask & COLU_CONF_ITEMBG)
{
- saved.itemBgColor = column->itemBgColor;
- saved.itemBgCount = column->itemBgCount;
column->itemBgColor = NULL;
column->itemBgCount = 0;
if (column->itemBgObj != NULL)
diff --git a/generic/tkTreeElem.c b/generic/tkTreeElem.c
index 3e71900..907b0e9 100644
--- a/generic/tkTreeElem.c
+++ b/generic/tkTreeElem.c
@@ -293,6 +293,9 @@ typedef void (*PerStateType_FreeProc)(TreeCtrl *, PerStateData *);
struct PerStateType
{
+#ifdef DEBUG_PSI
+ char *name;
+#endif
int size;
PerStateType_FromObjProc fromObjProc;
PerStateType_FreeProc freeProc;
@@ -327,7 +330,8 @@ static void PerStateInfo_Free(
if (pInfo->data == NULL)
return;
#ifdef DEBUG_PSI
- if (pInfo->type != typePtr) panic("PerStateInfo_Free type mismatch");
+ if (pInfo->type != typePtr) panic("PerStateInfo_Free type mismatch: got %s expected %s",
+ pInfo->type ? pInfo->type->name : "NULL", typePtr->name);
#endif
for (i = 0; i < pInfo->count; i++)
{
@@ -473,7 +477,7 @@ static Tcl_Obj *PerStateInfo_ObjForState(
int i;
#ifdef DEBUG_PSI
- if ((pInfo->data != NULL) && (pInfo->type != typePtr)) panic("PerStateInfo_ForStateObj type mismatch");
+ if ((pInfo->data != NULL) && (pInfo->type != typePtr)) panic("PerStateInfo_ObjForState type mismatch");
#endif
pData = PerStateInfo_ForState(tree, typePtr, pInfo, state, match);
@@ -498,7 +502,7 @@ static void PerStateInfo_Undefine(
Tcl_Obj *configObj = pInfo->obj, *listObj, *stateObj;
#ifdef DEBUG_PSI
- if ((pInfo->data != NULL) && (pInfo->type != typePtr)) panic("PerStateInfo_ForState type mismatch");
+ if ((pInfo->data != NULL) && (pInfo->type != typePtr)) panic("PerStateInfo_Undefine type mismatch");
#endif
for (i = 0; i < pInfo->count; i++)
@@ -637,6 +641,9 @@ static void BitmapFree(TreeCtrl *tree, PerStateDataBitmap *pBitmap)
PerStateType pstBitmap =
{
+#ifdef DEBUG_PSI
+ "Bitmap",
+#endif
sizeof(PerStateDataBitmap),
(PerStateType_FromObjProc) BitmapFromObj,
(PerStateType_FreeProc) BitmapFree
@@ -689,6 +696,9 @@ static void BorderFree(TreeCtrl *tree, PerStateDataBorder *pBorder)
PerStateType pstBorder =
{
+#ifdef DEBUG_PSI
+ "Border",
+#endif
sizeof(PerStateDataBorder),
(PerStateType_FromObjProc) BorderFromObj,
(PerStateType_FreeProc) BorderFree
@@ -741,6 +751,9 @@ static void ColorFree(TreeCtrl *tree, PerStateDataColor *pColor)
PerStateType pstColor =
{
+#ifdef DEBUG_PSI
+ "Color",
+#endif
sizeof(PerStateDataColor),
(PerStateType_FromObjProc) ColorFromObj,
(PerStateType_FreeProc) ColorFree
@@ -793,6 +806,9 @@ static void FontFree(TreeCtrl *tree, PerStateDataFont *pFont)
PerStateType pstFont =
{
+#ifdef DEBUG_PSI
+ "Font",
+#endif
sizeof(PerStateDataFont),
(PerStateType_FromObjProc) FontFromObj,
(PerStateType_FreeProc) FontFree
@@ -854,6 +870,9 @@ static void ImageFree(TreeCtrl *tree, PerStateDataImage *pImage)
PerStateType pstImage =
{
+#ifdef DEBUG_PSI
+ "Image",
+#endif
sizeof(PerStateDataImage),
(PerStateType_FromObjProc) ImageFromObj,
(PerStateType_FreeProc) ImageFree
@@ -903,6 +922,9 @@ static void ReliefFree(TreeCtrl *tree, PerStateDataRelief *pRelief)
PerStateType pstRelief =
{
+#ifdef DEBUG_PSI
+ "Relief",
+#endif
sizeof(PerStateDataRelief),
(PerStateType_FromObjProc) ReliefFromObj,
(PerStateType_FreeProc) ReliefFree
@@ -1028,22 +1050,26 @@ static int ConfigBitmap(ElementArgs *args)
}
if (args->config.flagSelf & BITMAP_CONF_BITMAP)
- {
PSTSave(&elemX->bitmap, &savedX.bitmap);
+ if (args->config.flagSelf & BITMAP_CONF_FG)
+ PSTSave(&elemX->fg, &savedX.fg);
+ if (args->config.flagSelf & BITMAP_CONF_BG)
+ PSTSave(&elemX->bg, &savedX.bg);
+
+ if (args->config.flagSelf & BITMAP_CONF_BITMAP)
+ {
if (PerStateInfo_FromObj(tree, &pstBitmap, &elemX->bitmap) != TCL_OK)
continue;
}
if (args->config.flagSelf & BITMAP_CONF_FG)
{
- PSTSave(&elemX->fg, &savedX.fg);
if (PerStateInfo_FromObj(tree, &pstColor, &elemX->fg) != TCL_OK)
continue;
}
if (args->config.flagSelf & BITMAP_CONF_BG)
{
- PSTSave(&elemX->bg, &savedX.bg);
if (PerStateInfo_FromObj(tree, &pstColor, &elemX->bg) != TCL_OK)
continue;
}
@@ -1479,15 +1505,18 @@ static int ConfigBorder(ElementArgs *args)
}
if (args->config.flagSelf & BORDER_CONF_BG)
- {
PSTSave(&elemX->border, &savedX.border);
+ if (args->config.flagSelf & BORDER_CONF_RELIEF)
+ PSTSave(&elemX->relief, &savedX.relief);
+
+ if (args->config.flagSelf & BORDER_CONF_BG)
+ {
if (PerStateInfo_FromObj(tree, &pstBorder, &elemX->border) != TCL_OK)
continue;
}
if (args->config.flagSelf & BORDER_CONF_RELIEF)
{
- PSTSave(&elemX->relief, &savedX.relief);
if (PerStateInfo_FromObj(tree, &pstRelief, &elemX->relief) != TCL_OK)
continue;
}
@@ -1813,8 +1842,10 @@ static int ConfigImage(ElementArgs *args)
}
if (args->config.flagSelf & IMAGE_CONF_IMAGE)
- {
PSTSave(&elemX->image, &savedX.image);
+
+ if (args->config.flagSelf & IMAGE_CONF_IMAGE)
+ {
if (PerStateInfo_FromObj(tree, &pstImage, &elemX->image) != TCL_OK)
continue;
}
@@ -2127,22 +2158,26 @@ static int ConfigRect(ElementArgs *args)
}
if (args->config.flagSelf & RECT_CONF_FILL)
- {
PSTSave(&elemX->fill, &savedX.fill);
+ if (args->config.flagSelf & RECT_CONF_OUTLINE)
+ PSTSave(&elemX->outline, &savedX.outline);
+ if (args->config.flagSelf & RECT_CONF_OPEN)
+ savedX.open = elemX->open;
+
+ if (args->config.flagSelf & RECT_CONF_FILL)
+ {
if (PerStateInfo_FromObj(tree, &pstColor, &elemX->fill) != TCL_OK)
continue;
}
if (args->config.flagSelf & RECT_CONF_OUTLINE)
{
- PSTSave(&elemX->outline, &savedX.outline);
if (PerStateInfo_FromObj(tree, &pstColor, &elemX->outline) != TCL_OK)
continue;
}
if (args->config.flagSelf & RECT_CONF_OPEN)
{
- savedX.open = elemX->open;
elemX->open = 0;
if (elemX->openString != NULL)
{
@@ -2965,15 +3000,18 @@ static int ConfigText(ElementArgs *args)
}
if (args->config.flagSelf & TEXT_CONF_FILL)
- {
PSTSave(&elemX->fill, &savedX.fill);
+ if (args->config.flagSelf & TEXT_CONF_FONT)
+ PSTSave(&elemX->font, &savedX.font);
+
+ if (args->config.flagSelf & TEXT_CONF_FILL)
+ {
if (PerStateInfo_FromObj(tree, &pstColor, &elemX->fill) != TCL_OK)
continue;
}
if (args->config.flagSelf & TEXT_CONF_FONT)
{
- PSTSave(&elemX->font, &savedX.font);
if (PerStateInfo_FromObj(tree, &pstFont, &elemX->font) != TCL_OK)
continue;
}