Tk Source Code

View Ticket
Login
2023-04-10
19:33 Closed ticket [f4d9d74d]: Fix ignored -disabledwidth for canvas rectangle and oval items plus 7 other changes artifact: 21c4c562 user: fvogel
19:31
Fix [f4d9d74df6]: ignored -disabledwidth for canvas rectangle and oval items. Patch from Christopher Chavez. check-in: 7f869255 user: fvogel tags: trunk, main
19:31
Fix [f4d9d74df6]: ignored -disabledwidth for canvas rectangle and oval items. Patch from Christopher Chavez. check-in: 85b486a9 user: fvogel tags: core-8-6-branch
11:00 Ticket [f4d9d74d] Fix ignored -disabledwidth for canvas rectangle and oval items status still Open with 3 other changes artifact: 2b7a4ef6 user: chrstphrchvz
09:48 Add attachment f4d9d74df628.diff to ticket [f4d9d74d] artifact: cc85199f user: chrstphrchvz
09:46 New ticket [f4d9d74d] Fix ignored -disabledwidth for canvas rectangle and oval items. artifact: 2bea1777 user: chrstphrchvz

Ticket UUID: f4d9d74df628a3f6cb23231bd833c09026173319
Title: Fix ignored -disabledwidth for canvas rectangle and oval items
Type: Patch Version: 8.6.13
Submitter: chrstphrchvz Created on: 2023-04-10 09:46:42
Subsystem: 05. Canvas Items Assigned To: fvogel
Priority: 5 Medium Severity: Minor
Status: Closed Last Modified: 2023-04-10 19:33:01
Resolution: Accepted Closed By: fvogel
    Closed on: 2023-04-10 19:33:01
Description:

As reported by https://github.com/python/cpython/issues/103216. Tcl equivalent of reporter’s Tkinter script:

package require Tk
grid [canvas .c -height 250 -width 250]
set rect [.c create rectangle 40 40 180 180 \
	-fill red \
	-activefill green2 \
	-activeoutline green3 \
	-activewidth 4 \
	-disabledfill grey \
	-disabledoutline grey2 \
	-disabledwidth 4
]
grid [button .b1 -text disable -command {
	.c itemconfigure $rect -state disabled
}]
grid [button .b2 -text normal  -command {
	.c itemconfigure $rect -state normal
}]

See attached patch: .customPtr being set to &pixelOption (rather than NULL) means that .type is incorrectly being set to TK_CONFIG_PIXELS rather than TK_CONFIG_CUSTOM.

User Comments: fvogel added on 2023-04-10 19:33:01:
Right and well spotten, many thanks. This was here since the beginning of Tk and the fix is now merged in core-8-6-branch and trunk.

chrstphrchvz added on 2023-04-10 11:00:24:

Note: “ignored” may not be the only possible practical effect of this bug. I would think that what actually happens depends on whatever rectOvalPtr->outline.disabledWidth is initialized or set to, such as from contents of the buffer returned by ckalloc(typePtr->itemSize) (i.e. ckalloc(sizeof(RectOvalItem)) or whether Tk_GetPixels() only overwrites mantissa bits (on little endian systems) or more dramatically overwrites exponent bits (on big endian systems).


Attachments: