diff options
-rw-r--r-- | generic/tk3d.c | 41 | ||||
-rw-r--r-- | tests/canvas.test | 6 |
2 files changed, 27 insertions, 20 deletions
diff --git a/generic/tk3d.c b/generic/tk3d.c index f1cc8f1..65980e6 100644 --- a/generic/tk3d.c +++ b/generic/tk3d.c @@ -637,8 +637,7 @@ Tk_GetReliefFromObj( * * Results: * A standard Tcl return value. If all goes well then *reliefPtr is - * filled in with one of the values TK_RELIEF_RAISED, TK_RELIEF_FLAT, or - * TK_RELIEF_SUNKEN. + * filled in with one of the values TK_RELIEF_* * * Side effects: * None. @@ -654,30 +653,38 @@ Tk_GetRelief( { char c; size_t length; + int relief; c = name[0]; length = strlen(name); if ((c == 'f') && (strncmp(name, "flat", length) == 0)) { - *reliefPtr = TK_RELIEF_FLAT; - } else if ((c == 'g') && (strncmp(name, "groove", length) == 0) - && (length >= 2)) { - *reliefPtr = TK_RELIEF_GROOVE; + relief = TK_RELIEF_FLAT; + } else if ((c == 'g') && (strncmp(name, "groove", length) == 0)) { + relief = TK_RELIEF_GROOVE; } else if ((c == 'r') && (strncmp(name, "raised", length) == 0) && (length >= 2)) { - *reliefPtr = TK_RELIEF_RAISED; - } else if ((c == 'r') && (strncmp(name, "ridge", length) == 0)) { - *reliefPtr = TK_RELIEF_RIDGE; - } else if ((c == 's') && (strncmp(name, "solid", length) == 0)) { - *reliefPtr = TK_RELIEF_SOLID; - } else if ((c == 's') && (strncmp(name, "sunken", length) == 0)) { - *reliefPtr = TK_RELIEF_SUNKEN; + relief = TK_RELIEF_RAISED; + } else if ((c == 'r') && (strncmp(name, "ridge", length) == 0) + && (length >= 2)) { + relief = TK_RELIEF_RIDGE; + } else if ((c == 's') && (strncmp(name, "solid", length) == 0) + && (length >= 2)) { + relief = TK_RELIEF_SOLID; + } else if ((c == 's') && (strncmp(name, "sunken", length) == 0) + && (length >= 2)) { + relief = TK_RELIEF_SUNKEN; } else { - Tcl_SetObjResult(interp, - Tcl_ObjPrintf("bad relief \"%.50s\": must be %s", - name, "flat, groove, raised, ridge, solid, or sunken")); - Tcl_SetErrorCode(interp, "TK", "VALUE", "RELIEF", NULL); + if (interp) { + Tcl_SetObjResult(interp, + Tcl_ObjPrintf("bad relief \"%.50s\": must be %s", + name, "flat, groove, raised, ridge, solid, or sunken")); + Tcl_SetErrorCode(interp, "TK", "VALUE", "RELIEF", NULL); + } return TCL_ERROR; } + if (reliefPtr) { + *reliefPtr = relief; + } return TCL_OK; } diff --git a/tests/canvas.test b/tests/canvas.test index 8d4f64c..1224516 100644 --- a/tests/canvas.test +++ b/tests/canvas.test @@ -133,12 +133,12 @@ test canvas-1.32 {configuration options: bad value for "insertwidth"} -body { .c configure -insertwidth 6x } -returnCodes error -result {bad screen distance "6x"} test canvas-1.33 {configuration options: good value for "relief"} -body { - .c configure -relief groove + .c configure -relief g .c cget -relief } -result {groove} test canvas-1.34 {configuration options: bad value for "relief"} -body { - .c configure -relief 1.5 -} -returnCodes error -result {bad relief "1.5": must be flat, groove, raised, ridge, solid, or sunken} + .c configure -relief r +} -returnCodes error -result {bad relief "r": must be flat, groove, raised, ridge, solid, or sunken} test canvas-1.35 {configuration options: good value for "selectbackground"} -body { .c configure -selectbackground #110022 .c cget -selectbackground |