summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--generic/tk.h13
-rw-r--r--generic/tkCanvas.c2
-rw-r--r--generic/tkConfig.c10
-rw-r--r--generic/tkEntry.c2
-rw-r--r--generic/tkOldConfig.c26
-rw-r--r--generic/tkScrollbar.c2
-rw-r--r--generic/tkTextDisp.c2
-rw-r--r--macosx/tkMacOSXScale.c2
-rw-r--r--macosx/tkMacOSXScrlbr.c2
-rw-r--r--unix/tkUnixMenubu.c2
-rw-r--r--unix/tkUnixScale.c2
-rw-r--r--unix/tkUnixScrlbr.c2
12 files changed, 40 insertions, 27 deletions
diff --git a/generic/tk.h b/generic/tk.h
index e3c375c..d3f9141 100644
--- a/generic/tk.h
+++ b/generic/tk.h
@@ -237,8 +237,13 @@ typedef struct Tk_OptionSpec {
* Tk_ConfigSpec structures, so be sure to coordinate any changes carefully.
*/
-#define TK_OPTION_NULL_OK (1 << 0)
#define TK_OPTION_DONT_SET_DEFAULT (1 << 3)
+#if TCL_MAJOR_VERSION > 8
+# define TK_OPTION_NULL_OK TCL_NULL_OK
+#else
+# define TK_OPTION_NULL_OK (1 << 0)
+#endif
+#define TK_OPTION_NEG_OK (1 << 6) /* For TK_OPTION_PIXELS only, so no conflict with TK_OPTION_VAR */
#define TK_OPTION_VAR(type) ((sizeof(type) < 2 * sizeof(int)) ? ((int)(sizeof(type)&(sizeof(int)-1))<<6) : (3<<6))
#define TK_OPTION_ENUM_VAR TK_OPTION_VAR(Tk_OptionType)
@@ -428,13 +433,17 @@ typedef enum {
* (internal-use-only flags are defined there).
*/
-#define TK_CONFIG_NULL_OK (1 << 0)
#define TK_CONFIG_COLOR_ONLY (1 << 1)
#define TK_CONFIG_MONO_ONLY (1 << 2)
#define TK_CONFIG_DONT_SET_DEFAULT (1 << 3)
#ifndef TK_NO_DEPRECATED
# define TK_CONFIG_OPTION_SPECIFIED (1 << 4)
#endif /* !TK_NO_DEPRECATED */
+#if TCL_MAJOR_VERSION > 8
+# define TK_CONFIG_NULL_OK TCL_NULL_OK
+#else
+# define TK_CONFIG_NULL_OK (1 << 0)
+#endif
#define TK_CONFIG_USER_BIT 0x100
#endif /* __NO_OLD_CONFIG */
diff --git a/generic/tkCanvas.c b/generic/tkCanvas.c
index 8713497..38a297d 100644
--- a/generic/tkCanvas.c
+++ b/generic/tkCanvas.c
@@ -3261,7 +3261,7 @@ DisplayCanvas(
Tk_Height(tkwin) - 2*canvasPtr->highlightWidth,
canvasPtr->borderWidth, canvasPtr->relief);
}
- if (canvasPtr->highlightWidth != 0) {
+ if (canvasPtr->highlightWidth > 0) {
GC fgGC, bgGC;
bgGC = Tk_GCForColor(canvasPtr->highlightBgColorPtr,
diff --git a/generic/tkConfig.c b/generic/tkConfig.c
index 7362831..bbbed91 100644
--- a/generic/tkConfig.c
+++ b/generic/tkConfig.c
@@ -625,7 +625,7 @@ DoObjConfig(
} else {
oldInternalPtr = (char *) &internal.internalForm;
}
- nullOK = (optionPtr->specPtr->flags & (TK_OPTION_NULL_OK|TCL_NULL_OK));
+ nullOK = (optionPtr->specPtr->flags & (TK_OPTION_NULL_OK|TCL_NULL_OK|1));
switch (optionPtr->specPtr->type) {
case TK_OPTION_BOOLEAN: {
int newBool;
@@ -2130,7 +2130,7 @@ GetObjectForOption(
}
case TK_OPTION_INT: {
Tcl_WideInt value;
- int nullOK = (optionPtr->specPtr->flags & (TK_OPTION_NULL_OK|TCL_NULL_OK));
+ int nullOK = (optionPtr->specPtr->flags & (TK_OPTION_NULL_OK|TCL_NULL_OK|1));
if (optionPtr->specPtr->flags & TYPE_MASK) {
if ((optionPtr->specPtr->flags & TYPE_MASK) == TYPE_MASK) {
if (sizeof(long) > sizeof(int)) {
@@ -2151,7 +2151,7 @@ GetObjectForOption(
break;
}
case TK_OPTION_INDEX:
- if (!(optionPtr->specPtr->flags & (TK_OPTION_NULL_OK|TCL_NULL_OK)) || *((int *) internalPtr) != INT_MIN) {
+ if (!(optionPtr->specPtr->flags & (TK_OPTION_NULL_OK|TCL_NULL_OK|1)) || *((int *) internalPtr) != INT_MIN) {
if (*((int *) internalPtr) == INT_MIN) {
objPtr = TkNewIndexObj(TCL_INDEX_NONE);
} else if (*((int *) internalPtr) == INT_MAX) {
@@ -2168,7 +2168,7 @@ GetObjectForOption(
}
break;
case TK_OPTION_DOUBLE:
- if (!(optionPtr->specPtr->flags & (TK_OPTION_NULL_OK|TCL_NULL_OK)) || !isnan(*((double *) internalPtr))) {
+ if (!(optionPtr->specPtr->flags & (TK_OPTION_NULL_OK|TCL_NULL_OK|1)) || !isnan(*((double *) internalPtr))) {
objPtr = Tcl_NewDoubleObj(*((double *) internalPtr));
}
break;
@@ -2299,7 +2299,7 @@ GetObjectForOption(
break;
}
case TK_OPTION_PIXELS:
- if (!(optionPtr->specPtr->flags & (TK_OPTION_NULL_OK|TCL_NULL_OK)) || *((int *) internalPtr) != INT_MIN) {
+ if (!(optionPtr->specPtr->flags & (TK_OPTION_NULL_OK|TCL_NULL_OK|1)) || *((int *) internalPtr) != INT_MIN) {
objPtr = Tcl_NewWideIntObj(*((int *)internalPtr));
}
break;
diff --git a/generic/tkEntry.c b/generic/tkEntry.c
index 477f359..7ee455e 100644
--- a/generic/tkEntry.c
+++ b/generic/tkEntry.c
@@ -1316,7 +1316,7 @@ ConfigureEntry(
Tk_SetInternalBorder(entryPtr->tkwin,
entryPtr->borderWidth + entryPtr->highlightWidth);
- if (entryPtr->highlightWidth <= 0) {
+ if (entryPtr->highlightWidth < 0) {
entryPtr->highlightWidth = 0;
}
entryPtr->inset = entryPtr->highlightWidth
diff --git a/generic/tkOldConfig.c b/generic/tkOldConfig.c
index 55765e2..eed7171 100644
--- a/generic/tkOldConfig.c
+++ b/generic/tkOldConfig.c
@@ -359,7 +359,7 @@ DoConfig(
int nullValue;
nullValue = 0;
- if ((*value == 0) && (specPtr->specFlags & (TK_CONFIG_NULL_OK|TCL_NULL_OK))) {
+ if ((*value == 0) && (specPtr->specFlags & (TK_CONFIG_NULL_OK|TCL_NULL_OK|1))) {
nullValue = 1;
}
@@ -370,17 +370,17 @@ DoConfig(
ptr = (char *)widgRec + specPtr->offset;
switch (specPtr->type) {
case TK_CONFIG_BOOLEAN:
- if (Tcl_GetBoolean(interp, value, (int *) ptr) != TCL_OK) {
+ if (Tcl_GetBoolean(interp, value, (int *)ptr) != TCL_OK) {
return TCL_ERROR;
}
break;
case TK_CONFIG_INT:
- if (Tcl_GetInt(interp, value, (int *) ptr) != TCL_OK) {
+ if (Tcl_GetInt(interp, value, (int *)ptr) != TCL_OK) {
return TCL_ERROR;
}
break;
case TK_CONFIG_DOUBLE:
- if (Tcl_GetDouble(interp, value, (double *) ptr) != TCL_OK) {
+ if (Tcl_GetDouble(interp, value, (double *)ptr) != TCL_OK) {
return TCL_ERROR;
}
break;
@@ -482,7 +482,7 @@ DoConfig(
}
case TK_CONFIG_RELIEF:
uid = valueIsUid ? (Tk_Uid) value : Tk_GetUid(value);
- if (Tk_GetRelief(interp, uid, (int *) ptr) != TCL_OK) {
+ if (Tk_GetRelief(interp, uid, (int *)ptr) != TCL_OK) {
return TCL_ERROR;
}
break;
@@ -523,24 +523,26 @@ DoConfig(
break;
case TK_CONFIG_CAP_STYLE:
uid = valueIsUid ? (Tk_Uid) value : Tk_GetUid(value);
- if (Tk_GetCapStyle(interp, uid, (int *) ptr) != TCL_OK) {
+ if (Tk_GetCapStyle(interp, uid, (int *)ptr) != TCL_OK) {
return TCL_ERROR;
}
break;
case TK_CONFIG_JOIN_STYLE:
uid = valueIsUid ? (Tk_Uid) value : Tk_GetUid(value);
- if (Tk_GetJoinStyle(interp, uid, (int *) ptr) != TCL_OK) {
+ if (Tk_GetJoinStyle(interp, uid, (int *)ptr) != TCL_OK) {
return TCL_ERROR;
}
break;
case TK_CONFIG_PIXELS:
- if (Tk_GetPixels(interp, tkwin, value, (int *) ptr)
+ if (nullValue) {
+ *(int *)ptr = INT_MIN;
+ } if (Tk_GetPixels(interp, tkwin, value, (int *)ptr)
!= TCL_OK) {
return TCL_ERROR;
}
break;
case TK_CONFIG_MM:
- if (Tk_GetScreenMM(interp, tkwin, value, (double*)ptr) != TCL_OK) {
+ if (Tk_GetScreenMM(interp, tkwin, value, (double *)ptr) != TCL_OK) {
return TCL_ERROR;
}
break;
@@ -873,8 +875,10 @@ FormatConfigValue(
result = Tk_NameOfJoinStyle(*((int *)ptr));
break;
case TK_CONFIG_PIXELS:
- snprintf(buffer, 200, "%d", *((int *)ptr));
- result = buffer;
+ if ((*(int *)ptr != INT_MIN) || !(specPtr->specFlags & (TK_CONFIG_NULL_OK|TCL_NULL_OK|1))) {
+ snprintf(buffer, 200, "%d", *((int *)ptr));
+ result = buffer;
+ }
break;
case TK_CONFIG_MM:
Tcl_PrintDouble(interp, *((double *)ptr), buffer);
diff --git a/generic/tkScrollbar.c b/generic/tkScrollbar.c
index 04a4168..d91b603 100644
--- a/generic/tkScrollbar.c
+++ b/generic/tkScrollbar.c
@@ -57,7 +57,7 @@ static const Tk_ConfigSpec configSpecs[] = {
DEF_SCROLLBAR_CURSOR, offsetof(TkScrollbar, cursor), TK_CONFIG_NULL_OK, NULL},
{TK_CONFIG_PIXELS, "-elementborderwidth", "elementBorderWidth",
"BorderWidth", DEF_SCROLLBAR_EL_BORDER_WIDTH,
- offsetof(TkScrollbar, elementBorderWidth), 0, NULL},
+ offsetof(TkScrollbar, elementBorderWidth), TK_CONFIG_NULL_OK, NULL},
{TK_CONFIG_COLOR, "-highlightbackground", "highlightBackground",
"HighlightBackground", DEF_SCROLLBAR_HIGHLIGHT_BG,
offsetof(TkScrollbar, highlightBgColorPtr), 0, NULL},
diff --git a/generic/tkTextDisp.c b/generic/tkTextDisp.c
index cc4a12c..6afd08e 100644
--- a/generic/tkTextDisp.c
+++ b/generic/tkTextDisp.c
@@ -4414,7 +4414,7 @@ DisplayText(
Tk_Width(textPtr->tkwin) - 2*textPtr->highlightWidth,
Tk_Height(textPtr->tkwin) - 2*textPtr->highlightWidth,
textPtr->borderWidth, textPtr->relief);
- if (textPtr->highlightWidth != 0) {
+ if (textPtr->highlightWidth > 0) {
GC fgGC, bgGC;
bgGC = Tk_GCForColor(textPtr->highlightBgColorPtr,
diff --git a/macosx/tkMacOSXScale.c b/macosx/tkMacOSXScale.c
index a66bba7..96a61b8 100644
--- a/macosx/tkMacOSXScale.c
+++ b/macosx/tkMacOSXScale.c
@@ -197,7 +197,7 @@ TkpDisplayScale(
* vertical scales: border and traversal highlight.
*/
- if (scalePtr->highlightWidth != 0) {
+ if (scalePtr->highlightWidth > 0) {
GC gc = Tk_GCForColor(scalePtr->highlightColorPtr, Tk_WindowId(tkwin));
Tk_DrawFocusHighlight(tkwin, gc, scalePtr->highlightWidth,
diff --git a/macosx/tkMacOSXScrlbr.c b/macosx/tkMacOSXScrlbr.c
index ec54d42..500a5cf 100644
--- a/macosx/tkMacOSXScrlbr.c
+++ b/macosx/tkMacOSXScrlbr.c
@@ -284,7 +284,7 @@ TkpDisplayScrollbar(
* Draw a 3D rectangle to provide a base for the native scrollbar.
*/
- if (scrollPtr->highlightWidth != 0) {
+ if (scrollPtr->highlightWidth > 0) {
GC fgGC, bgGC;
bgGC = Tk_GCForColor(scrollPtr->highlightBgColorPtr, (Pixmap) macWin);
diff --git a/unix/tkUnixMenubu.c b/unix/tkUnixMenubu.c
index dd67639..c9a33aa 100644
--- a/unix/tkUnixMenubu.c
+++ b/unix/tkUnixMenubu.c
@@ -279,7 +279,7 @@ TkpDisplayMenuButton(
Tk_Height(tkwin) - 2*mbPtr->highlightWidth,
mbPtr->borderWidth, mbPtr->relief);
}
- if (mbPtr->highlightWidth != 0) {
+ if (mbPtr->highlightWidth > 0) {
if (mbPtr->flags & GOT_FOCUS) {
gc = Tk_GCForColor(mbPtr->highlightColorPtr, pixmap);
} else {
diff --git a/unix/tkUnixScale.c b/unix/tkUnixScale.c
index 6e73268..8f4d23b 100644
--- a/unix/tkUnixScale.c
+++ b/unix/tkUnixScale.c
@@ -632,7 +632,7 @@ TkpDisplayScale(
Tk_Height(tkwin) - 2*scalePtr->highlightWidth,
scalePtr->borderWidth, scalePtr->relief);
}
- if (scalePtr->highlightWidth != 0) {
+ if (scalePtr->highlightWidth > 0) {
GC gc;
if (scalePtr->flags & GOT_FOCUS) {
diff --git a/unix/tkUnixScrlbr.c b/unix/tkUnixScrlbr.c
index 9660718..001b2e9 100644
--- a/unix/tkUnixScrlbr.c
+++ b/unix/tkUnixScrlbr.c
@@ -128,7 +128,7 @@ TkpDisplayScrollbar(
pixmap = Tk_GetPixmap(scrollPtr->display, Tk_WindowId(tkwin),
Tk_Width(tkwin), Tk_Height(tkwin), Tk_Depth(tkwin));
- if (scrollPtr->highlightWidth != 0) {
+ if (scrollPtr->highlightWidth > 0) {
GC gc;
if (scrollPtr->flags & GOT_FOCUS) {