summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2024-01-23 13:54:02 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2024-01-23 13:54:02 (GMT)
commit4ece42ac76dc352bf0fddf6d8edee38be7cc0014 (patch)
tree0028ca75dcb8547031bc91b8a1cedad97a6602ff /generic
parente64d38045b3d09b51e7f212794155a7df8b0bc1f (diff)
parent2c1df2e9f4f50fb3d70656c278d42ca0da4401d4 (diff)
downloadtk-4ece42ac76dc352bf0fddf6d8edee38be7cc0014.zip
tk-4ece42ac76dc352bf0fddf6d8edee38be7cc0014.tar.gz
tk-4ece42ac76dc352bf0fddf6d8edee38be7cc0014.tar.bz2
Merge 8.6
Diffstat (limited to 'generic')
-rw-r--r--generic/tkText.c5
-rw-r--r--generic/tkText.h38
-rw-r--r--generic/tkTextTag.c321
3 files changed, 284 insertions, 80 deletions
diff --git a/generic/tkText.c b/generic/tkText.c
index 7616d4d..ddb24de 100644
--- a/generic/tkText.c
+++ b/generic/tkText.c
@@ -627,9 +627,10 @@ CreateWidget(
*/
textPtr->selTagPtr = TkTextCreateTag(textPtr, "sel", NULL);
+ textPtr->selTagPtr->reliefString = (char *)
+ ckalloc(sizeof(DEF_TEXT_SELECT_RELIEF));
+ strcpy(textPtr->selTagPtr->reliefString, DEF_TEXT_SELECT_RELIEF);
Tk_GetRelief(interp, DEF_TEXT_SELECT_RELIEF, &textPtr->selTagPtr->relief);
- textPtr->selTagPtr->reliefObj = Tcl_NewStringObj(DEF_TEXT_SELECT_RELIEF, -1);
- Tcl_IncrRefCount(textPtr->selTagPtr->reliefObj);
textPtr->currentMarkPtr = TkTextSetMark(textPtr, "current", &startIndex);
textPtr->insertMarkPtr = TkTextSetMark(textPtr, "insert", &startIndex);
diff --git a/generic/tkText.h b/generic/tkText.h
index 46d837d..6cdc640 100644
--- a/generic/tkText.h
+++ b/generic/tkText.h
@@ -342,7 +342,8 @@ typedef struct TkTextTag {
* value specified here. */
int borderWidth; /* Width of 3-D border for background. */
Tcl_Obj *borderWidthPtr; /* Width of 3-D border for background. */
- Tcl_Obj *reliefObj;
+ char *reliefString; /* -relief option string (malloc-ed). NULL
+ * means option not specified. */
int relief; /* 3-D relief for background. */
Pixmap bgStipple; /* Stipple bitmap for background. None means
* no value specified here. */
@@ -353,31 +354,34 @@ typedef struct TkTextTag {
Pixmap fgStipple; /* Stipple bitmap for text and other
* foreground stuff. None means no value
* specified here.*/
- Tcl_Obj *justifyObj;
- Tk_Justify justify; /* How to justify text: TK_JUSTIFY_LEFT,
- * TK_JUSTIFY_RIGHT, TK_JUSTIFY_CENTER, or TK_JUSTIFY_NULL. */
- Tcl_Obj *lMargin1Obj; /* -lmargin1 option object. NULL
+ char *justifyString; /* -justify option string (malloc-ed). NULL
+ * means option not specified. */
+ Tk_Justify justify; /* How to justify text: TK_JUSTIFY_CENTER,
+ * TK_JUSTIFY_LEFT, or TK_JUSTIFY_RIGHT.
+ * Only valid if justifyString is non-NULL. */
+ char *lMargin1String; /* -lmargin1 option string (malloc-ed). NULL
* means option not specified. */
int lMargin1; /* Left margin for first display line of each
* text line, in pixels. INT_MIN means option not specified. */
- Tcl_Obj *lMargin2Obj; /* -lmargin2 option object. NULL
+ char *lMargin2String; /* -lmargin2 option string (malloc-ed). NULL
* means option not specified. */
int lMargin2; /* Left margin for second and later display lines
- * of each text line, in pixels. */
+ * of each text line, in pixels. INT_MIN means option not specified. */
Tk_3DBorder lMarginColor; /* Used for drawing background in left margins.
* This is used for both lmargin1 and lmargin2.
* NULL means no value specified here. */
- Tcl_Obj *offsetObj; /* -offset option. NULL means option not specified. */
+ char *offsetString; /* -offset option string (malloc-ed). NULL
+ * means option not specified. */
int offset; /* Vertical offset of text's baseline from
* baseline of line. Used for superscripts and
* subscripts. INT_MIN means option not specified. */
- Tcl_Obj *overstrikePtr; /* -overstrike option. NULL
+ char *overstrikeString; /* -overstrike option string (malloc-ed). NULL
* means option not specified. */
int overstrike; /* > 0 means draw horizontal line through
* middle of text. -1 means not specified. */
XColor *overstrikeColor; /* Color for the overstrike. NULL means same
* color as foreground. */
- Tcl_Obj *rMarginObj; /* -rmargin option object. NULL
+ char *rMarginString; /* -rmargin option string (malloc-ed). NULL
* means option not specified. */
int rMargin; /* Right margin for text, in pixels. INT_MIN means option not specified. */
Tk_3DBorder rMarginColor; /* Used for drawing background in right margin.
@@ -386,15 +390,15 @@ typedef struct TkTextTag {
* NULL means no value specified here. */
XColor *selFgColor; /* Foreground color for selected text. NULL means
* no value specified here. */
- Tcl_Obj *spacing1Obj; /* -spacing1 option object. NULL
+ char *spacing1String; /* -spacing1 option string (malloc-ed). NULL
* means option not specified. */
int spacing1; /* Extra spacing above first display line for
* text line. INT_MIN means option not specified. */
- Tcl_Obj *spacing2Obj; /* -spacing2 option object. NULL
+ char *spacing2String; /* -spacing2 option string (malloc-ed). NULL
* means option not specified. */
int spacing2; /* Extra spacing between display lines for the
* same text line. INT_MIN means option not specified. */
- Tcl_Obj *spacing3Obj; /* -spacing3 option object. NULL
+ char *spacing3String; /* -spacing3 option string (malloc-ed). NULL
* means option not specified. */
int spacing3; /* Extra spacing below last display line for
* text line. INT_MIN means option not specified. */
@@ -403,9 +407,9 @@ typedef struct TkTextTag {
struct TkTextTabArray *tabArrayPtr;
/* Info about tabs for tag (malloc-ed) or
* NULL. Corresponds to tabString. */
- TkTextTabStyle tabStyle; /* One of TK_TEXT_TABSTYLE_TABULAR or TK_TEXT_TABSTYLE_WORDPROCESSOR
- * or TK_TEXT_TABSTYLE_NULL (if not specified). */
- Tcl_Obj *underlinePtr; /* -underline option. NULL
+ TkTextTabStyle tabStyle; /* One of TK_TEXT_TABSTYLE_TABULAR, TK_TEXT_TABSTYLE_WORDPROCESSOR
+ * or TK_TEXT_TABSTYLE_NONE. (if not specified)*/
+ char *underlineString; /* -underline option string (malloc-ed). NULL
* means option not specified. */
int underline; /* > 0 means draw underline underneath
* text. -1 means not specified. */
@@ -415,7 +419,7 @@ typedef struct TkTextTag {
* Must be TEXT_WRAPMODE_CHAR, TEXT_WRAPMODE_WORD,
* TEXT_WRAPMODE_NONE, or TEXT_WRAPMODE_NULL to
* use wrapmode for whole widget. */
- Tcl_Obj *elideObj; /* -elide option. NULL
+ char *elideString; /* -elide option string (malloc-ed). NULL
* means option not specified. */
int elide; /* > 0 means that data under this tag
* should not be displayed. -1 means not specified. */
diff --git a/generic/tkTextTag.c b/generic/tkTextTag.c
index e21f2ac..add03c0 100644
--- a/generic/tkTextTag.c
+++ b/generic/tkTextTag.c
@@ -16,6 +16,222 @@
#include "tkText.h"
#include "default.h"
+/* This struct can be used for booleans, relief and pixels */
+typedef struct {
+ char *string;
+ int value;
+} IntStruct;
+
+typedef struct {
+ char *string;
+ Tk_Justify value;
+} JustifyStruct;
+
+static int
+ObjectIsEmpty(
+ Tcl_Obj *objPtr) /* Object to test. May be NULL. */
+{
+ if (objPtr == NULL) {
+ return 1;
+ }
+ if (objPtr->bytes == NULL) {
+ Tcl_GetString(objPtr);
+ }
+ return (objPtr->length == 0);
+}
+
+#define OPTION_NONNEG (1 << 10)
+
+static int
+SetPixels(
+ TCL_UNUSED(void *),
+ Tcl_Interp *interp,
+ Tk_Window tkwin,
+ Tcl_Obj **value,
+ char *recordPtr,
+ int internalOffset,
+ char *oldInternalPtr,
+ int flags)
+{
+ IntStruct pixel = {NULL, INT_MIN};
+ IntStruct *internalPtr = (IntStruct *)(recordPtr + internalOffset);
+
+ if (!(flags & TK_OPTION_NULL_OK) || !ObjectIsEmpty(*value)) {
+ if (Tk_GetPixelsFromObj(interp, tkwin, *value, &pixel.value) != TCL_OK) {
+ return TCL_ERROR;
+ }
+ if ((flags & OPTION_NONNEG) && pixel.value < 0) {
+ pixel.value = 0;
+ }
+ pixel.string = ckalloc((*value)->length + 1);
+ strcpy(pixel.string, (*value)->bytes);
+ }
+
+ *((char **)oldInternalPtr) = NULL;
+ *internalPtr = pixel;
+ return TCL_OK;
+};
+
+static int
+SetBoolean(
+ TCL_UNUSED(void *),
+ Tcl_Interp *interp,
+ TCL_UNUSED(Tk_Window),
+ Tcl_Obj **value,
+ char *recordPtr,
+ int internalOffset,
+ char *oldInternalPtr,
+ int flags)
+{
+ IntStruct booleanVal = {NULL, -1};
+ IntStruct *internalPtr = (IntStruct *)(recordPtr + internalOffset);
+ int nullOK = (flags & TK_OPTION_NULL_OK);
+
+ if (!nullOK || !ObjectIsEmpty(*value)) {
+ if (Tcl_GetBooleanFromObj(nullOK ? NULL : interp, *value, &booleanVal.value) != TCL_OK) {
+ if (nullOK) {
+ Tcl_AppendResult(interp, "expected boolean value or \"\" but got \"",
+ Tcl_GetString(*value), "\"", NULL);
+ }
+ return TCL_ERROR;
+ }
+ booleanVal.string = ckalloc((*value)->length + 1);
+ strcpy(booleanVal.string, (*value)->bytes);
+ }
+
+ *((char **)oldInternalPtr) = NULL;
+ *internalPtr = booleanVal;
+ return TCL_OK;
+};
+
+static int
+SetRelief(
+ TCL_UNUSED(void *),
+ Tcl_Interp *interp,
+ TCL_UNUSED(Tk_Window),
+ Tcl_Obj **value,
+ char *recordPtr,
+ int internalOffset,
+ char *oldInternalPtr,
+ int flags)
+{
+ IntStruct relief = {NULL, TK_RELIEF_NULL};
+ IntStruct *internalPtr = (IntStruct *)(recordPtr + internalOffset);
+ int nullOK = (flags & TK_OPTION_NULL_OK);
+
+ if (!nullOK || !ObjectIsEmpty(*value)) {
+ if (Tk_GetReliefFromObj(nullOK ? NULL : interp, *value, &relief.value) != TCL_OK) {
+ if (nullOK) {
+ Tcl_AppendResult(interp, "bad relief \"",
+ Tcl_GetString(*value), "\": must be flat, groove, raised, ridge, solid, sunken, or \"\"", NULL);
+ }
+ return TCL_ERROR;
+ }
+ relief.string = ckalloc((*value)->length + 1);
+ strcpy(relief.string, (*value)->bytes);
+ }
+
+ *((char **)oldInternalPtr) = NULL;
+ *internalPtr = relief;
+ return TCL_OK;
+};
+
+static int
+SetJustify(
+ TCL_UNUSED(void *),
+ Tcl_Interp *interp,
+ TCL_UNUSED(Tk_Window),
+ Tcl_Obj **value,
+ char *recordPtr,
+ int internalOffset,
+ char *oldInternalPtr,
+ int flags)
+{
+ JustifyStruct justify = {NULL, TK_JUSTIFY_NULL};
+ JustifyStruct *internalPtr = (JustifyStruct *)(recordPtr + internalOffset);
+ int nullOK = (flags & TK_OPTION_NULL_OK);
+
+ if (!nullOK || !ObjectIsEmpty(*value)) {
+ if (Tk_GetJustifyFromObj(nullOK ? NULL : interp, *value, &justify.value) != TCL_OK) {
+ if (nullOK) {
+ Tcl_AppendResult(interp, "bad justification \"",
+ Tcl_GetString(*value), "\": must be left, right, center, or \"\"", NULL);
+ }
+ return TCL_ERROR;
+ }
+ justify.string = ckalloc((*value)->length + 1);
+ strcpy(justify.string, (*value)->bytes);
+ }
+
+ *((char **)oldInternalPtr) = NULL;
+ *internalPtr = justify;
+ return TCL_OK;
+};
+
+static Tcl_Obj *GetStruct(
+ TCL_UNUSED(void *),
+ TCL_UNUSED(Tk_Window),
+ char *recordPtr,
+ int internalOffset)
+{
+ char **structPtr = (char **)(recordPtr + internalOffset);
+
+ if (*structPtr == NULL || **structPtr == '\0') {
+ return Tcl_NewObj();
+ }
+ return Tcl_NewStringObj(*structPtr, TCL_INDEX_NONE);
+};
+
+
+static void
+FreeStruct(
+ TCL_UNUSED(void *),
+ TCL_UNUSED(Tk_Window),
+ char *internalPtr)
+{
+ char **structPtr = (char **)internalPtr;
+ if (*structPtr) {
+ ckfree(*structPtr);
+ *structPtr = NULL;
+ }
+};
+
+static const Tk_ObjCustomOption pixelsOption = {
+ "pixels", /* name */
+ SetPixels, /* setProc */
+ GetStruct, /* getProc */
+ NULL, /* restoreProc */
+ FreeStruct, /* freeProc */
+ 0
+};
+
+static const Tk_ObjCustomOption booleanOption = {
+ "boolean", /* name */
+ SetBoolean, /* setProc */
+ GetStruct, /* getProc */
+ NULL, /* restoreProc */
+ FreeStruct, /* freeProc */
+ 0
+};
+
+static const Tk_ObjCustomOption justifyOption = {
+ "justify", /* name */
+ SetJustify, /* setProc */
+ GetStruct, /* getProc */
+ NULL, /* restoreProc */
+ FreeStruct, /* freeProc */
+ 0
+};
+
+static const Tk_ObjCustomOption reliefOption = {
+ "relief", /* name */
+ SetRelief, /* setProc */
+ GetStruct, /* getProc */
+ NULL, /* restoreProc */
+ FreeStruct, /* freeProc */
+ 0
+};
+
static const Tk_OptionSpec tagOptionSpecs[] = {
{TK_OPTION_BORDER, "-background", NULL, NULL,
NULL, TCL_INDEX_NONE, offsetof(TkTextTag, border), TK_OPTION_NULL_OK, 0, 0},
@@ -24,55 +240,55 @@ static const Tk_OptionSpec tagOptionSpecs[] = {
{TK_OPTION_PIXELS, "-borderwidth", NULL, NULL,
NULL, offsetof(TkTextTag, borderWidthPtr), offsetof(TkTextTag, borderWidth),
TK_OPTION_NULL_OK, 0, 0},
- {TK_OPTION_BOOLEAN, "-elide", NULL, NULL,
- NULL, offsetof(TkTextTag, elideObj), offsetof(TkTextTag, elide),
- TK_OPTION_NULL_OK, 0, 0},
+ {TK_OPTION_CUSTOM, "-elide", NULL, NULL,
+ NULL, TCL_INDEX_NONE, offsetof(TkTextTag, elideString),
+ TK_OPTION_NULL_OK, &booleanOption, 0},
{TK_OPTION_BITMAP, "-fgstipple", NULL, NULL,
NULL, TCL_INDEX_NONE, offsetof(TkTextTag, fgStipple), TK_OPTION_NULL_OK, 0, 0},
{TK_OPTION_FONT, "-font", NULL, NULL,
NULL, TCL_INDEX_NONE, offsetof(TkTextTag, tkfont), TK_OPTION_NULL_OK, 0, 0},
{TK_OPTION_COLOR, "-foreground", NULL, NULL,
NULL, TCL_INDEX_NONE, offsetof(TkTextTag, fgColor), TK_OPTION_NULL_OK, 0, 0},
- {TK_OPTION_JUSTIFY, "-justify", NULL, NULL,
- NULL, offsetof(TkTextTag, justifyObj), offsetof(TkTextTag, justify), TK_OPTION_NULL_OK, 0,0},
- {TK_OPTION_PIXELS, "-lmargin1", NULL, NULL,
- NULL, offsetof(TkTextTag, lMargin1Obj), offsetof(TkTextTag, lMargin1), TK_OPTION_NULL_OK,0,0},
- {TK_OPTION_PIXELS, "-lmargin2", NULL, NULL,
- NULL, offsetof(TkTextTag, lMargin2Obj), offsetof(TkTextTag, lMargin2), TK_OPTION_NULL_OK,0,0},
+ {TK_OPTION_CUSTOM, "-justify", NULL, NULL,
+ NULL, TCL_INDEX_NONE, offsetof(TkTextTag, justifyString), TK_OPTION_NULL_OK, &justifyOption,0},
+ {TK_OPTION_CUSTOM, "-lmargin1", NULL, NULL,
+ NULL, TCL_INDEX_NONE, offsetof(TkTextTag, lMargin1String), TK_OPTION_NULL_OK,&pixelsOption,0},
+ {TK_OPTION_CUSTOM, "-lmargin2", NULL, NULL,
+ NULL, TCL_INDEX_NONE, offsetof(TkTextTag, lMargin2String), TK_OPTION_NULL_OK,&pixelsOption,0},
{TK_OPTION_BORDER, "-lmargincolor", NULL, NULL,
NULL, TCL_INDEX_NONE, offsetof(TkTextTag, lMarginColor), TK_OPTION_NULL_OK, 0, 0},
- {TK_OPTION_PIXELS, "-offset", NULL, NULL,
- NULL, offsetof(TkTextTag, offsetObj), offsetof(TkTextTag, offset), TK_OPTION_NULL_OK, 0, 0},
- {TK_OPTION_BOOLEAN, "-overstrike", NULL, NULL,
- NULL, offsetof(TkTextTag, overstrikePtr), offsetof(TkTextTag, overstrike),
- TK_OPTION_NULL_OK, 0, 0},
+ {TK_OPTION_CUSTOM, "-offset", NULL, NULL,
+ NULL, TCL_INDEX_NONE, offsetof(TkTextTag, offsetString), TK_OPTION_NULL_OK, &pixelsOption, 0},
+ {TK_OPTION_CUSTOM, "-overstrike", NULL, NULL,
+ NULL, TCL_INDEX_NONE, offsetof(TkTextTag, overstrikeString),
+ TK_OPTION_NULL_OK, &booleanOption, 0},
{TK_OPTION_COLOR, "-overstrikefg", NULL, NULL,
NULL, TCL_INDEX_NONE, offsetof(TkTextTag, overstrikeColor),
TK_OPTION_NULL_OK, 0, 0},
- {TK_OPTION_RELIEF, "-relief", NULL, NULL,
- NULL, offsetof(TkTextTag, reliefObj), offsetof(TkTextTag, relief), TK_OPTION_NULL_OK, 0, 0},
- {TK_OPTION_PIXELS, "-rmargin", NULL, NULL,
- NULL, offsetof(TkTextTag, rMarginObj), offsetof(TkTextTag, rMargin), TK_OPTION_NULL_OK, 0,0},
+ {TK_OPTION_CUSTOM, "-relief", NULL, NULL,
+ NULL, TCL_INDEX_NONE, offsetof(TkTextTag, reliefString), TK_OPTION_NULL_OK, &reliefOption, 0},
+ {TK_OPTION_CUSTOM, "-rmargin", NULL, NULL,
+ NULL, TCL_INDEX_NONE, offsetof(TkTextTag, rMarginString), TK_OPTION_NULL_OK, &pixelsOption,0},
{TK_OPTION_BORDER, "-rmargincolor", NULL, NULL,
NULL, TCL_INDEX_NONE, offsetof(TkTextTag, rMarginColor), TK_OPTION_NULL_OK, 0, 0},
{TK_OPTION_BORDER, "-selectbackground", NULL, NULL,
NULL, TCL_INDEX_NONE, offsetof(TkTextTag, selBorder), TK_OPTION_NULL_OK, 0, 0},
{TK_OPTION_COLOR, "-selectforeground", NULL, NULL,
NULL, TCL_INDEX_NONE, offsetof(TkTextTag, selFgColor), TK_OPTION_NULL_OK, 0, 0},
- {TK_OPTION_PIXELS, "-spacing1", NULL, NULL,
- NULL, offsetof(TkTextTag, spacing1Obj), offsetof(TkTextTag, spacing1), TK_OPTION_NULL_OK,0,0},
- {TK_OPTION_PIXELS, "-spacing2", NULL, NULL,
- NULL, offsetof(TkTextTag, spacing2Obj), offsetof(TkTextTag, spacing2), TK_OPTION_NULL_OK,0,0},
- {TK_OPTION_PIXELS, "-spacing3", NULL, NULL,
- NULL, offsetof(TkTextTag, spacing3Obj), offsetof(TkTextTag, spacing3), TK_OPTION_NULL_OK,0,0},
+ {TK_OPTION_CUSTOM, "-spacing1", NULL, NULL,
+ NULL, TCL_INDEX_NONE, offsetof(TkTextTag, spacing1String), TK_OPTION_NULL_OK|OPTION_NONNEG, &pixelsOption,0},
+ {TK_OPTION_CUSTOM, "-spacing2", NULL, NULL,
+ NULL, TCL_INDEX_NONE, offsetof(TkTextTag, spacing2String), TK_OPTION_NULL_OK|OPTION_NONNEG, &pixelsOption,0},
+ {TK_OPTION_CUSTOM, "-spacing3", NULL, NULL,
+ NULL, TCL_INDEX_NONE, offsetof(TkTextTag, spacing3String), TK_OPTION_NULL_OK|OPTION_NONNEG, &pixelsOption,0},
{TK_OPTION_STRING, "-tabs", NULL, NULL,
NULL, offsetof(TkTextTag, tabStringPtr), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0},
{TK_OPTION_STRING_TABLE, "-tabstyle", NULL, NULL,
NULL, TCL_INDEX_NONE, offsetof(TkTextTag, tabStyle),
TK_OPTION_NULL_OK|TK_OPTION_ENUM_VAR, tkTextTabStyleStrings, 0},
- {TK_OPTION_BOOLEAN, "-underline", NULL, NULL,
- NULL, offsetof(TkTextTag, underlinePtr), offsetof(TkTextTag, underline),
- TK_OPTION_NULL_OK, 0, 0},
+ {TK_OPTION_CUSTOM, "-underline", NULL, NULL,
+ NULL, TCL_INDEX_NONE, offsetof(TkTextTag, underlineString),
+ TK_OPTION_NULL_OK, &booleanOption, 0},
{TK_OPTION_COLOR, "-underlinefg", NULL, NULL,
NULL, TCL_INDEX_NONE, offsetof(TkTextTag, underlineColor),
TK_OPTION_NULL_OK, 0, 0},
@@ -170,12 +386,12 @@ TkTextTagCmd(
*/
textPtr->sharedTextPtr->stateEpoch++;
}
- for (i = 4; i < (Tcl_Size)objc; i += 2) {
+ for (i = 4; i < objc; i += 2) {
if (TkTextGetObjIndex(interp, textPtr, objv[i],
&index1) != TCL_OK) {
return TCL_ERROR;
}
- if ((Tcl_Size)objc > (i+1)) {
+ if (objc > (i+1)) {
if (TkTextGetObjIndex(interp, textPtr, objv[i+1],
&index2) != TCL_OK) {
return TCL_ERROR;
@@ -351,8 +567,6 @@ TkTextTagCmd(
Tcl_SetObjResult(interp, objPtr);
return TCL_OK;
} else {
- int result = TCL_OK;
-
if (Tk_SetOptions(interp, tagPtr, tagPtr->optionTable,
objc-4, objv+4, textPtr->tkwin, NULL, NULL) != TCL_OK) {
return TCL_ERROR;
@@ -368,21 +582,6 @@ TkTextTagCmd(
if (tagPtr->borderWidth < 0) {
tagPtr->borderWidth = 0;
}
- if (tagPtr->spacing1 != INT_MIN) {
- if (tagPtr->spacing1 < 0) {
- tagPtr->spacing1 = 0;
- }
- }
- if (tagPtr->spacing2 != INT_MIN) {
- if (tagPtr->spacing2 < 0) {
- tagPtr->spacing2 = 0;
- }
- }
- if (tagPtr->spacing3 != INT_MIN) {
- if (tagPtr->spacing3 < 0) {
- tagPtr->spacing3 = 0;
- }
- }
if (tagPtr->tabArrayPtr != NULL) {
ckfree(tagPtr->tabArrayPtr);
tagPtr->tabArrayPtr = NULL;
@@ -478,7 +677,7 @@ TkTextTagCmd(
TkTextRedrawTag(textPtr->sharedTextPtr, NULL,
NULL, NULL, tagPtr, 1);
}
- return result;
+ return TCL_OK;
}
break;
}
@@ -489,7 +688,7 @@ TkTextTagCmd(
Tcl_WrongNumArgs(interp, 3, objv, "tagName ?tagName ...?");
return TCL_ERROR;
}
- for (i = 3; i < (Tcl_Size)objc; i++) {
+ for (i = 3; i < objc; i++) {
hPtr = Tcl_FindHashEntry(&textPtr->sharedTextPtr->tagTable,
Tcl_GetString(objv[i]));
if (hPtr == NULL) {
@@ -593,7 +792,7 @@ TkTextTagCmd(
for (i = 0; i < arraySize; i++) {
tagPtr = arrayPtr[i];
Tcl_ListObjAppendElement(interp, listObj,
- Tcl_NewStringObj(tagPtr->name,-1));
+ Tcl_NewStringObj(tagPtr->name, TCL_INDEX_NONE));
}
Tcl_SetObjResult(interp, listObj);
ckfree(arrayPtr);
@@ -945,42 +1144,42 @@ TkTextCreateTag(
tagPtr->border = NULL;
tagPtr->borderWidth = 0;
tagPtr->borderWidthPtr = NULL;
- tagPtr->reliefObj = NULL;
+ tagPtr->reliefString = NULL;
tagPtr->relief = TK_RELIEF_NULL;
tagPtr->bgStipple = None;
tagPtr->fgColor = NULL;
tagPtr->tkfont = NULL;
tagPtr->fgStipple = None;
- tagPtr->justifyObj = NULL;
+ tagPtr->justifyString = NULL;
tagPtr->justify = TK_JUSTIFY_NULL;
- tagPtr->lMargin1Obj = NULL;
+ tagPtr->lMargin1String = NULL;
tagPtr->lMargin1 = INT_MIN;
- tagPtr->lMargin2Obj = NULL;
+ tagPtr->lMargin2String = NULL;
tagPtr->lMargin2 = INT_MIN;
tagPtr->lMarginColor = NULL;
- tagPtr->offsetObj = NULL;
+ tagPtr->offsetString = NULL;
tagPtr->offset = INT_MIN;
- tagPtr->overstrikePtr = NULL;
+ tagPtr->overstrikeString = NULL;
tagPtr->overstrike = -1;
tagPtr->overstrikeColor = NULL;
- tagPtr->rMarginObj = NULL;
+ tagPtr->rMarginString = NULL;
tagPtr->rMargin = INT_MIN;
tagPtr->rMarginColor = NULL;
tagPtr->selBorder = NULL;
tagPtr->selFgColor = NULL;
- tagPtr->spacing1Obj = NULL;
+ tagPtr->spacing1String = NULL;
tagPtr->spacing1 = INT_MIN;
- tagPtr->spacing2Obj = NULL;
+ tagPtr->spacing2String = NULL;
tagPtr->spacing2 = INT_MIN;
- tagPtr->spacing3Obj = NULL;
+ tagPtr->spacing3String = NULL;
tagPtr->spacing3 = INT_MIN;
tagPtr->tabStringPtr = NULL;
tagPtr->tabArrayPtr = NULL;
tagPtr->tabStyle = TK_TEXT_TABSTYLE_NULL;
- tagPtr->underlinePtr = NULL;
+ tagPtr->underlineString = NULL;
tagPtr->underline = -1;
tagPtr->underlineColor = NULL;
- tagPtr->elideObj = NULL;
+ tagPtr->elideString = NULL;
tagPtr->elide = -1;
tagPtr->wrapMode = TEXT_WRAPMODE_NULL;
tagPtr->affectsDisplay = 0;