| Ticket UUID: | 2a0a8340227f0ab5de373a59d855dc3d71c88b63 | |||
| Title: | pixel values can report false list lengths | |||
| Type: | Bug | Version: | 9.0 | |
| Submitter: | dgp | Created on: | 2025-09-05 15:40:38 | |
| Subsystem: | 27. Objects | Assigned To: | jan.nijtmans | |
| Priority: | 5 Medium | Severity: | Important | |
| Status: | Closed | Last Modified: | 2025-11-03 21:04:50 | |
| Resolution: | Fixed | Closed By: | jan.nijtmans | |
| Closed on: | 2025-11-03 21:04:50 | |||
| Description: |
Tk 8.6 got this right... % package require Tk 8.6.18 % [button .b] configure -padx "3 m" % llength [.b cget -padx] 2 Tk 9 gets it wrong: % package require Tk 9.0.3 % [button .b] configure -padx "3 m" % llength [.b cget -padx] 1 | |||
| User Comments: |
jan.nijtmans added on 2025-11-03 21:04:50:
Simple fix [526669416126d796|here] jan.nijtmans added on 2025-10-31 19:14:25: Ping dgp added on 2025-09-08 16:38:06: At least on Linux, the Tk test suite does not have any tests of pixel or mm values that have whitespace between the number and the units designation. dgp added on 2025-09-05 16:28:34: The "mm" Tcl_ObjType suffers from the same bug. The "pixel" and "mm" types are 95%+ identical. Is there truly a need for both of them? Even if there is, couldn't they be refactored to share a large fraction of their implementation? dgp added on 2025-09-05 16:09:44: A corner case to consider: % [button .b] configure -padx "0x10 c" % .b cget -padx 0x10 c dgp added on 2025-09-05 16:01:05: The simplest fix is to revert the adoption of the extended Tcl_ObjType functionality. An alternative would be to revise the "lengthProc" in the pixel Tcl_ObjType to report the correct length, taking the steps to distinguish the length 1 values from the length 2 values. A mildly incompatible alternative would be to revise the SetPixelFromAny() function so that values with whitespace between the number and the units are rejected, so that length 2 list values are no longer accepted as pixel values. The choice between these options (or another one) would be better made by Tk developers who can anticipate the effect on other parts of the Tk code base, and the world of Tk code out there. dgp added on 2025-09-05 15:54:05: In Tk 9, the "pixel" Tcl_ObjType is using the abstract list features of Tcl_ObjType to report that when used as a list, every pixel value is a list of length 1, which the demo script shows to be false. | |||
Home
Timeline
Branches
Tags
Forum
Tickets
Download
Wiki