Tk Source Code

Check-in [f8530c0e]
Login
EuroTcl/OpenACS 11 - 12 JULY 2024, VIENNA

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:bugfix in tkOldConfig.c
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | tip-698 | core-tip-698
Files: files | file ages | folders
SHA3-256: f8530c0ece477c8ed5be3ed46dd12b2cc135efd25c9adff17daa5d4b365bea09
User & Date: jan.nijtmans 2024-06-17 22:39:29
Context
2024-06-19
16:08
Rebase to 9.0 check-in: 24c55234 user: jan.nijtmans tags: tip-698
2024-06-17
22:39
bugfix in tkOldConfig.c check-in: f8530c0e user: jan.nijtmans tags: tip-698, core-tip-698
22:22
Merge 9.0. Finish implementation. Remove special processing, not neccessary any more due to the new flag check-in: c7151474 user: jan.nijtmans tags: tip-698
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to generic/tkCanvas.c.

2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
    /*
     * A few options need special processing, such as setting the background
     * from a 3-D border and creating a GC for copying bits to the screen.
     */

    Tk_SetBackgroundFromBorder(canvasPtr->tkwin, canvasPtr->bgBorder);

    if (canvasPtr->highlightWidth < 0) {
	canvasPtr->highlightWidth = 0;
    }
    canvasPtr->inset = canvasPtr->borderWidth + canvasPtr->highlightWidth;

    gcValues.function = GXcopy;
    gcValues.graphics_exposures = False;
    gcValues.foreground = Tk_3DBorderColor(canvasPtr->bgBorder)->pixel;
    newGC = Tk_GetGC(canvasPtr->tkwin,
	    GCFunction|GCGraphicsExposures|GCForeground, &gcValues);







<
<
<







2269
2270
2271
2272
2273
2274
2275



2276
2277
2278
2279
2280
2281
2282
    /*
     * A few options need special processing, such as setting the background
     * from a 3-D border and creating a GC for copying bits to the screen.
     */

    Tk_SetBackgroundFromBorder(canvasPtr->tkwin, canvasPtr->bgBorder);




    canvasPtr->inset = canvasPtr->borderWidth + canvasPtr->highlightWidth;

    gcValues.function = GXcopy;
    gcValues.graphics_exposures = False;
    gcValues.foreground = Tk_3DBorderColor(canvasPtr->bgBorder)->pixel;
    newGC = Tk_GetGC(canvasPtr->tkwin,
	    GCFunction|GCGraphicsExposures|GCForeground, &gcValues);

Changes to generic/tkOldConfig.c.

514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
	case TK_CONFIG_JOIN_STYLE:
	    uid = valueIsUid ? (Tk_Uid) value : Tk_GetUid(value);
	    if (Tk_GetJoinStyle(interp, uid, (int *)ptr) != TCL_OK) {
		return TCL_ERROR;
	    }
	    break;
	case TK_CONFIG_PIXELS: {
		int pixel = INT_MIN;
	    if (!nullValue && ((Tk_GetPixels(NULL, tkwin, value, &pixel)
		    != TCL_OK) || ((pixel < 0) && !(specPtr->specFlags & TK_OPTION_NEG_OK)))) {
		Tcl_SetObjResult(interp, Tcl_ObjPrintf(
			"expected screen distance%s but got \"%.50s\"",
			(specPtr->specFlags & (TK_CONFIG_NULL_OK|TCL_NULL_OK|1)) ? " or \"\"" : "", value));
		Tcl_SetErrorCode(interp, "TK", "VALUE", "PIXELS", (char *)NULL);
		return TCL_ERROR;







|







514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
	case TK_CONFIG_JOIN_STYLE:
	    uid = valueIsUid ? (Tk_Uid) value : Tk_GetUid(value);
	    if (Tk_GetJoinStyle(interp, uid, (int *)ptr) != TCL_OK) {
		return TCL_ERROR;
	    }
	    break;
	case TK_CONFIG_PIXELS: {
	    int pixel = INT_MIN;
	    if (!nullValue && ((Tk_GetPixels(NULL, tkwin, value, &pixel)
		    != TCL_OK) || ((pixel < 0) && !(specPtr->specFlags & TK_OPTION_NEG_OK)))) {
		Tcl_SetObjResult(interp, Tcl_ObjPrintf(
			"expected screen distance%s but got \"%.50s\"",
			(specPtr->specFlags & (TK_CONFIG_NULL_OK|TCL_NULL_OK|1)) ? " or \"\"" : "", value));
		Tcl_SetErrorCode(interp, "TK", "VALUE", "PIXELS", (char *)NULL);
		return TCL_ERROR;
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
    case TK_CONFIG_CAP_STYLE:
	result = Tk_NameOfCapStyle(*((int *)ptr));
	break;
    case TK_CONFIG_JOIN_STYLE:
	result = Tk_NameOfJoinStyle(*((int *)ptr));
	break;
    case TK_CONFIG_PIXELS:
	if ((*(int *)ptr >= 0) || (specPtr->specFlags & TK_OPTION_NEG_OK)) {
	    snprintf(buffer, 200, "%d", *((int *)ptr));
	    result = buffer;
	}
	break;
    case TK_CONFIG_MM:
	Tcl_PrintDouble(interp, *((double *)ptr), buffer);
	result = buffer;







|







860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
    case TK_CONFIG_CAP_STYLE:
	result = Tk_NameOfCapStyle(*((int *)ptr));
	break;
    case TK_CONFIG_JOIN_STYLE:
	result = Tk_NameOfJoinStyle(*((int *)ptr));
	break;
    case TK_CONFIG_PIXELS:
	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);
	result = buffer;

Changes to generic/tkUtil.c.

362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
	    tsoffset.flags |= TK_OFFSET_INDEX;
	    goto goodTSOffset;
	}
	goto badTSOffset;
    }

    *((char *) q) = 0;
    result = Tk_GetPixels(interp, tkwin, (char *)p, &tsoffset.xoffset);
    *((char *) q) = ',';
    if (result != TCL_OK) {
	return TCL_ERROR;
    }
    if (Tk_GetPixels(interp, tkwin, (char*)q+1, &tsoffset.yoffset) != TCL_OK) {
	return TCL_ERROR;
    }







|







362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
	    tsoffset.flags |= TK_OFFSET_INDEX;
	    goto goodTSOffset;
	}
	goto badTSOffset;
    }

    *((char *) q) = 0;
    result = Tk_GetPixels(interp, tkwin, (char *) p, &tsoffset.xoffset);
    *((char *) q) = ',';
    if (result != TCL_OK) {
	return TCL_ERROR;
    }
    if (Tk_GetPixels(interp, tkwin, (char*)q+1, &tsoffset.yoffset) != TCL_OK) {
	return TCL_ERROR;
    }