diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2024-01-23 20:46:58 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2024-01-23 20:46:58 (GMT) |
commit | 03582e574085bb1a722ddb42239db6116db7c66a (patch) | |
tree | b2acac1728a6dceb22148fb10c31e9f54749bad0 /generic | |
parent | d1e742a7b7a9b4754993a7f19e61ecc674d14fa2 (diff) | |
download | tk-03582e574085bb1a722ddb42239db6116db7c66a.zip tk-03582e574085bb1a722ddb42239db6116db7c66a.tar.gz tk-03582e574085bb1a722ddb42239db6116db7c66a.tar.bz2 |
Revise "bad screen distance" error-messages
Diffstat (limited to 'generic')
-rw-r--r-- | generic/tkConfig.c | 7 | ||||
-rw-r--r-- | generic/tkGet.c | 9 | ||||
-rw-r--r-- | generic/tkObj.c | 6 | ||||
-rw-r--r-- | generic/tkTextTag.c | 20 | ||||
-rw-r--r-- | generic/tkUtil.c | 2 |
5 files changed, 28 insertions, 16 deletions
diff --git a/generic/tkConfig.c b/generic/tkConfig.c index 17a3c28..642a9e5 100644 --- a/generic/tkConfig.c +++ b/generic/tkConfig.c @@ -962,8 +962,13 @@ DoObjConfig( if (nullOK && ObjectIsEmpty(valuePtr)) { valuePtr = NULL; newPixels = INT_MIN; - } else if (Tk_GetPixelsFromObj(interp, tkwin, valuePtr, + } else if (Tk_GetPixelsFromObj(nullOK ? NULL : interp, tkwin, valuePtr, &newPixels) != TCL_OK) { + if (nullOK && interp) { + Tcl_AppendResult(interp, "expected screen distance or \"\" but got \"", + Tcl_GetString(valuePtr), "\"", NULL); + Tcl_SetErrorCode(interp, "TK", "VALUE", "PIXELS", NULL); + } return TCL_ERROR; } if (internalPtr != NULL) { diff --git a/generic/tkGet.c b/generic/tkGet.c index 2b0e7ee..f96b566 100644 --- a/generic/tkGet.c +++ b/generic/tkGet.c @@ -601,7 +601,7 @@ Tk_GetScreenMM( error: if (interp != NULL) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( - "bad screen distance \"%s\"", string)); + "expected screen distance but got \"%s\"", string)); Tcl_SetErrorCode(interp, "TK", "VALUE", "SCREEN_DISTANCE", NULL); } return TCL_ERROR; @@ -713,8 +713,9 @@ TkGetDoublePixels( } if (!tkwin) { if (interp != NULL) { - Tcl_SetObjResult(interp, Tcl_NewStringObj("bad screen", -1)); - Tcl_SetErrorCode(interp, "TK", "VALUE", "FRACTIONAL_PIXELS", NULL); + Tcl_SetObjResult(interp, Tcl_ObjPrintf( + "expected screen distance but got \"%s\"", string)); + Tcl_SetErrorCode(interp, "TK", "VALUE", "PIXELS", NULL); } return TCL_ERROR; } @@ -729,7 +730,7 @@ TkGetDoublePixels( error: if (interp != NULL) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( - "bad screen distance \"%s\"", string)); + "expected screen distance but got \"%s\"", string)); Tcl_SetErrorCode(interp, "TK", "VALUE", "FRACTIONAL_PIXELS", NULL); } return TCL_ERROR; diff --git a/generic/tkObj.c b/generic/tkObj.c index 8978886..7a4027a 100644 --- a/generic/tkObj.c +++ b/generic/tkObj.c @@ -546,7 +546,7 @@ SetPixelFromAny( error: if (interp != NULL) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( - "bad screen distance \"%.50s\"", string)); + "expected screen distance but got \"%s\"", string)); Tcl_SetErrorCode(interp, "TK", "VALUE", "PIXELS", NULL); } return TCL_ERROR; @@ -830,8 +830,8 @@ SetMMFromAny( if (rest == string) { error: Tcl_SetObjResult(interp, Tcl_ObjPrintf( - "bad screen distance \"%s\"", string)); - Tcl_SetErrorCode(interp, "TK", "VALUE", "DISTANCE", NULL); + "expected screen distance but got \"%s\"", string)); + Tcl_SetErrorCode(interp, "TK", "VALUE", "PIXELS", NULL); return TCL_ERROR; } switch (*rest) { diff --git a/generic/tkTextTag.c b/generic/tkTextTag.c index add03c0..dd24b42 100644 --- a/generic/tkTextTag.c +++ b/generic/tkTextTag.c @@ -49,15 +49,21 @@ SetPixels( Tk_Window tkwin, Tcl_Obj **value, char *recordPtr, - int internalOffset, + Tcl_Size internalOffset, char *oldInternalPtr, int flags) { IntStruct pixel = {NULL, INT_MIN}; IntStruct *internalPtr = (IntStruct *)(recordPtr + internalOffset); + int nullOK = (flags & TK_OPTION_NULL_OK); - if (!(flags & TK_OPTION_NULL_OK) || !ObjectIsEmpty(*value)) { - if (Tk_GetPixelsFromObj(interp, tkwin, *value, &pixel.value) != TCL_OK) { + if (!nullOK || !ObjectIsEmpty(*value)) { + if (Tk_GetPixelsFromObj(nullOK ? NULL : interp, tkwin, *value, &pixel.value) != TCL_OK) { + if (nullOK) { + Tcl_SetObjResult(interp, Tcl_ObjPrintf( + "expected screen distance or \"\" but got \"%.50s\"", Tcl_GetString(*value))); + Tcl_SetErrorCode(interp, "TK", "VALUE", "PIXELS", NULL); + } return TCL_ERROR; } if ((flags & OPTION_NONNEG) && pixel.value < 0) { @@ -79,7 +85,7 @@ SetBoolean( TCL_UNUSED(Tk_Window), Tcl_Obj **value, char *recordPtr, - int internalOffset, + Tcl_Size internalOffset, char *oldInternalPtr, int flags) { @@ -111,7 +117,7 @@ SetRelief( TCL_UNUSED(Tk_Window), Tcl_Obj **value, char *recordPtr, - int internalOffset, + Tcl_Size internalOffset, char *oldInternalPtr, int flags) { @@ -143,7 +149,7 @@ SetJustify( TCL_UNUSED(Tk_Window), Tcl_Obj **value, char *recordPtr, - int internalOffset, + Tcl_Size internalOffset, char *oldInternalPtr, int flags) { @@ -172,7 +178,7 @@ static Tcl_Obj *GetStruct( TCL_UNUSED(void *), TCL_UNUSED(Tk_Window), char *recordPtr, - int internalOffset) + Tcl_Size internalOffset) { char **structPtr = (char **)(recordPtr + internalOffset); diff --git a/generic/tkUtil.c b/generic/tkUtil.c index 3f07142..6099c0c 100644 --- a/generic/tkUtil.c +++ b/generic/tkUtil.c @@ -494,7 +494,7 @@ TkPixelParseProc( if ((result == TCL_OK) && (clientData == NULL) && (*doublePtr < 0.0)) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( - "bad screen distance \"%s\"", value)); + "expected screen distance but got \"%s\"", value)); Tcl_SetErrorCode(interp, "TK", "VALUE", "PIXELS", NULL); return TCL_ERROR; } |