Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
50 most recent check-ins
|
2026-09-25
| ||
| 02:02 | Fix for [7f3bea9f15] to allow select when no open/close indicator leaf check-in: 2ee8b64b user: bohagan tags: trunk, main | |
| 01:41 | Improve test suite performance leaf check-in: 4881b9a3 user: kevin_walzer tags: wayland_test | |
|
2026-09-24
| ||
| 20:45 | Add tests imgPhInstance-7.1 and 7.2 for -gamma and -palette [32f2e19de8]. leaf check-in: b7178d60 user: serhiy.storchaka tags: win-photo-gamma-palette | |
| 19:15 |
Fix [54c2ca0e94]: photo: pixels made semi-transparent with "transparency set ... -alpha" are drawn opaque.
Set the COMPLEX_ALPHA flag when "transparency set -alpha" sets a partial alpha value. Add test imgPhInstance-6.1. leaf check-in: 3faec478 user: serhiy.storchaka tags: photo-transparency-set-alpha | |
| 16:24 |
Fix [7ca431c997]: MS-Win: tk_getOpenFile and tk_getSaveFile leak memory when -initialfile is given more than once.
Free the previous -initialfile value before converting the new one. leaf check-in: 18ed3e6f user: serhiy.storchaka tags: win-dialog-initialfile-leak | |
| 14:20 | Update changes.md leaf check-in: 3e424834 user: jan.nijtmans tags: core-9-0-branch | |
| 14:18 | Fix [3131699cb4]: Mapped/Unmapped and Iconic State Problems leaf check-in: dff1adf8 user: jan.nijtmans tags: core-8-6-branch | |
| 13:53 |
Fix [32f2e19de8]: Windows: photo -gamma and -palette are ignored since RGBA rendering.
Draw the photo instance pixmap, where gamma correction and palette reduction are applied, when the instance has a non-default gamma or palette and the image has no partial transparency. check-in: c892f772 user: serhiy.storchaka tags: win-photo-gamma-palette | |
| 12:50 | Fix [0ec9336873bc987c]: --disable-bidi does not disable base chunks and drawing in context on X11 check-in: 3d18c592 user: jan.nijtmans tags: trunk, main | |
| 12:46 | Fix [3131699cb4]: Mapped/Unmapped and Iconic State Problems check-in: 8a03a558 user: jan.nijtmans tags: core-9-0-branch | |
| 12:41 | Fix [3131699cb4]: Mapped/Unmapped and Iconic State Problems check-in: 9a32b4c8 user: jan.nijtmans tags: trunk, main | |
| 12:00 | Fix for [e7fc29ce4c]: Performance problems with "photo copy -to". check-in: db55ab86 user: csaba tags: core-8-6-branch | |
| 11:51 |
Make the base chunk of the text layout thread-specific.
The base chunk of the stretch being laid out was kept in a static variable, so text widgets laid out concurrently in several threads overwrote each other's pointer and crashed. Base chunks are used on macOS, and since the bidi text rendering also on Windows and X11. [Bug a0c1a9c6c6] leaf check-in: 3f22f896 user: serhiy.storchaka tags: text-basechunk-threads | |
| 11:43 | Fix for [e7fc29ce4c]: Performance problems with "photo copy -to". check-in: 3a28a2f1 user: csaba tags: core-9-0-branch | |
| 11:36 | Fix for [e7fc29ce4c]: Performance problems with "photo copy -to". check-in: a695524c user: csaba tags: trunk, main | |
| 11:27 |
Fix text widget bbox widths for multi-byte characters with bidi text rendering.
CharBboxProc() measured the character at byteIndex as one byte, which ends in the middle of a multi-byte UTF-8 character. The bidi measuring code does not tolerate this. Now it measures up to the start of the next character. [Bug 7579c335f1] leaf check-in: f74f65f3 user: serhiy.storchaka tags: text-bbox-multibyte | |
| 11:09 |
Speed up the RTL auto-detection of the text widget and fix its per-widget state.
The Text class bindings scanned every line in Tcl and removed the RTL tag line by line on every <Map> and after every insert, which made mapping many or large text widgets very slow. Now the scan is skipped if the text contains no RTL characters, the tag is removed once, and lines are checked with regular expressions. RTL characters now include all characters with Unicode Bidi_Class R or AL, not only U+0590-U+08FF. The pending flag is now per widget (a second widget changed in the same idle cycle was not re-tagged), and the per-widget flags are removed when the widget is destroyed (a recreated widget was not scanned). [Bug 5d983ebf48] leaf check-in: f8c5c81c user: serhiy.storchaka tags: text-rtl-detect-speed | |
| 11:04 | New testcase spinbox-26.2 check-in: 76e79776 user: jan.nijtmans tags: trunk, main | |
| 10:53 |
Do not starve idle handlers with many text widgets.
While a redisplay was pending, AsyncUpdateLineMetrics() polled for it with a 1 ms timer. With several hundred text widgets these timers were always due, so the idle handlers, including the redisplay itself, never ran: "update" never returned and the application kept the CPU busy. Now the line metrics update waits for the redisplay in an idle handler instead. [Bug 1348333] leaf check-in: 5478e577 user: serhiy.storchaka tags: text-metrics-idle-wait | |
| 10:49 | New testcase spinbox-26.2 check-in: 2886c9dd user: jan.nijtmans tags: core-9-0-branch | |
| 09:57 | Fix [2358545fff] (again). Thanks, Serhiy! check-in: 8ebff84d user: jan.nijtmans tags: core-8-6-branch | |
| 09:39 |
Do not crash or leave dangling entries when grid or place is used on a half-dead window.
"grid .x -in .f" in a <Destroy> binding of .f dereferenced a NULL container, and "place" on a half-dead window or with a half-dead -in container added a hash entry for a window about to be freed, which later led to a use-after-free. Now a half-dead window is ignored, and content put -in a half-dead container is left unmanaged and unmapped. [Bug 3020550] leaf check-in: 8c00370c user: serhiy.storchaka tags: halfdead-geometry-crash | |
| 08:18 | Add a test that spinbox values with leading zeros are not parsed as octal. Tcl 9 does not treat them as octal, so only core-8-6-branch needs the fix. [Bug 9e89324a0a] closed check-in: f2e555e6 user: serhiy.storchaka tags: spinbox-octal-test | |
| 08:15 | Fix the bug reference in the spinbox-26.2 test title. [Bug 9e89324a0a] closed check-in: 8ac67e76 user: serhiy.storchaka tags: spinbox-octal-86 | |
| 08:13 | Do not parse spinbox values with leading zeros as octal. The fix for [9e89324a0a] replaced sscanf() with Tcl_GetDouble(), which in Tcl 8.6 treats "08" as invalid octal and "010" as 8, so a spinbox with -format %02.0f went from 07 to 08 to 00. Strip leading zeros before Tcl_GetDouble(). [Bug 9e89324a0a] check-in: 833ef12b user: serhiy.storchaka tags: spinbox-octal-86 | |
|
2026-09-23
| ||
| 21:55 |
Do not reset the cursor over a window not managed by Tk.
Tk_HWNDToWindow() returns NULL when the pointer is over a window which Tk does not own, for example a child window created by an extension. Tk_UpdatePointer() then called UpdateCursor(NULL), which fell through to TkpSetCursor(None) and loaded the default arrow cursor, so the 250 ms mouse timer kept overwriting the cursor set by the owner of that window. [Bug 546607] leaf check-in: a283eb2a user: serhiy.storchaka tags: win-foreign-cursor | |
| 21:09 |
Let Windows set the resize cursors on the frame of a toplevel.
TkWinChildProc short circuited every WM_SETCURSOR message, and WmProc falls through to it for toplevels, so the resize cursors on the window border were only shown transiently and flickered back to the arrow. Short circuit only in the client area, where Tk sets the cursor itself. [Bug 525728] leaf check-in: a6d320c4 user: serhiy.storchaka tags: win-frame-cursor | |
| 20:28 |
Fix [5d52ad92fa]: creating widgets is slow when an input method is active
Tk created an X input context for every window as soon as it got any event, and every creation costs a round trip to the input method. With ibus running this made the creation of widgets about ten times slower: 480 labels took about 470 ms instead of 36 ms, and the delay grew with the number of widgets. Now the input context is created only for a toplevel and for the window which receives the focus, which is where it is used. With ibus the same 480 labels take 20-29 ms and 480 entries 6-7 ms. Based on the approach of the abandoned bug-xim branch by Brad Lanam. leaf check-in: 894c1665 user: serhiy.storchaka tags: x11-lazy-xic | |
| 19:30 | Open release branch. Bump version to 9.1.0 leaf check-in: ee83c9e5 user: dgp tags: core-9-1-0-rc | |
| 19:00 |
INCOMPLETE experiment, do not merge: close the connection to a display which is not used any more [923174]
Tk opened a display when the first window was created on it, but never closed it, even after all windows on that display were destroyed. If the X server was terminated then, the next XFlush() on the dead socket killed the whole application, although no window of it was displayed there any more. Here the last Tk_DestroyWindow() on a display which no Tk application uses schedules a check at idle time, and the check closes the display if no window has been created on it in the meantime. This fixes the reported case, but it is not enough: creating a window again on a display which was closed fails in the font layer, because TkCloseDisplay() does not release borders, bitmaps, colors, cursors and fonts. See [923174]. closed check-in: 7caf2758 user: serhiy.storchaka tags: x11-close-unused-display | |
| 13:23 | Rebase to trunk. Review: use more bools and/or flags closed check-in: 1db01f71 user: jan.nijtmans tags: x11-wm-hidden-state, core-x11-wm-hidden-state | |
| 12:14 |
Fix [1439266]: spinbox -values overrides the value of the -textvariable
ConfigureEntry() sets the value of the widget from the -textvariable, and then the -values branch replaced it unconditionally with the first element of the list, while the -from/-to branch right below only moves a value which lies outside the range. So a spinbox created with -from and -to kept the value of its -textvariable, but a spinbox created with -values did not. Now the current value is kept if it is one of -values, and the first element is used otherwise, as before. Tests spinbox-5.13 and spinbox-5.14. leaf check-in: 52b41b80 user: serhiy.storchaka tags: spinbox-values-keep-value | |
| 11:43 |
Fix [853414]: document what is substituted for a % sequence which is invalid for the event
ExpandPercents() initializes the replacement string to "??" and only overwrites it when the event carries the requested field, so a substitution which is not valid for the event type has long yielded the literal string "??". doc/bind.n said that the value was undefined; now it says what is substituted, both in the general remark and in the description of %d. leaf check-in: f18f718c user: serhiy.storchaka tags: doc-undefined-substitutions | |
| 11:14 | Updated the changes file. check-in: f2432fe2 user: csaba tags: core-8-6-branch | |
| 11:07 | Fix for [3de1b72157]: ttk::notebook takes the focus when clicked, even with the -takefocus 0 option. check-in: 08026898 user: csaba tags: core-8-6-branch | |
| 11:01 | Fix for [3de1b72157]: ttk::notebook takes the focus when clicked, even with the -takefocus 0 option. check-in: 76f25dd9 user: csaba tags: core-9-0-branch | |
| 10:33 | Fix for [3de1b72157]: ttk::notebook takes the focus when clicked, even with the -takefocus 0 option. check-in: a695f427 user: csaba tags: trunk, main | |
| 09:19 | Fix [223635]: NULL dereference as result of peculiarly formed font name. Update changelog check-in: 16ff7e43 user: jan.nijtmans tags: core-8-6-branch | |
| 08:56 | Fix [2236352]: NULL dereference as result of peculiarly formed font name check-in: ec6c013e user: jan.nijtmans tags: core-9-0-branch | |
| 08:53 | Fix [2236352]: NULL dereference as result of peculiarly formed font name check-in: d26ddd6f user: jan.nijtmans tags: trunk, main | |
| 08:31 |
Fix [b086bb1d61]: ttk::style command moves ttk::panedwindow sashes
Backport of [880f8c8d59] from 9.0 and 9.1. A pane in a hidden notebook tab is unmapped, so its geometry request was taken as the initial request of a pane which is not shown yet, and it overwrote the sash position. The new Ttk_ContentIsMapped() tells whether the pane has been placed, which does not change while the panedwindow itself is unmapped. Test paned-unmapped-1. check-in: 0b59d9cd user: serhiy.storchaka tags: core-8-6-branch | |
| 08:25 |
On macOS, do not replace the signal handlers of the embedding application
Backport of [87fa518cee] from 9.0 and 9.1: the SIGINT, SIGHUP and SIGTERM handlers are only installed if the application which embeds Tk has not installed its own (e.g. Python raises KeyboardInterrupt from its SIGINT handler). check-in: c505fe41 user: serhiy.storchaka tags: core-8-6-branch | |
| 08:12 | [52e9b0f5] MS-Win: Add keysims for non-latin keys + MacOS: correct 338 pre-2004 keysyms from Armenian, Georgian, Vietnamese, Latin-8, Latin-9, Farsi, Arabic and Cyrillic check-in: ed0bded4 user: oehhar tags: core-9-0-branch | |
| 08:04 |
Fix [a9bd2ab98b], [f492c3de04]: keyboard input on Windows
Backport of the fixes from 9.0 and 9.1. A WM_KEYDOWN message with VK_PACKET, sent for a character entered via an input method or the touch keyboard, was re-posted with the character as the virtual key code, so the KeyPress event had the keysym of a function key. Now no events are generated for the VK_PACKET key itself; the WM_CHAR message produced by TranslateMessage() generates the key events. GetTranslatedKey() retrieved the WM_CHAR messages with GetMessageA(), so Windows converted the characters to the code page of the keyboard layout, and TkpGetString() decoded them with a code page guessed from the input language. When the two differed, the typed characters were mangled. Now the messages are retrieved as Unicode and the characters are stored as UTF-8 in the key event, and the code page machinery is removed. Tests event-8.4, event-8.5 and event-8.6, and the missing testsendinput constraint. check-in: 4a7d6f6b user: serhiy.storchaka tags: core-8-6-branch | |
| 07:37 | [52e9b0f5] MS-Win: Add keysims for non-latin keys + MacOS: correct 338 pre-2004 keysyms from Armenian, Georgian, Vietnamese, Latin-8, Latin-9, Farsi, Arabic and Cyrillic check-in: db39aee2 user: oehhar tags: trunk, main | |
| 07:35 |
Fix [1723059]: entryconfigure of a cascade entry destroys its menu
The entry of a cloned menu points to a clone of the cascade menu, not to the cascade menu itself. If the cascade entry of a menubar menu was configured with the menu which it already had, ConfigureMenuCloneEntries() passed the -menu option to the clones anyway, so their entries pointed to the cascade menu itself, and the next change of the entry deleted it as if it were a clone. Now the -menu option is not passed to the clones if the cascade menu is not changed. Test menu-42.1. leaf check-in: ef4c3587 user: serhiy.storchaka tags: menu-clone-cascade-destroy | |
| 01:39 | Cleaner GI test runner check-in: 2b25618f user: kevin_walzer tags: wayland_test | |
|
2026-09-22
| ||
| 20:32 |
Ignore the events of switching the keyboard layout in the tests
Switching the keyboard layout on Windows releases the modifiers of the key which switches it, so a KeyRelease event for Control arrives after the switch. It was delivered only when the test ran the event loop, which happens after the bindings are set, so it was recorded by tests event-8.7 and event-8.8 and they failed. Now the event loop is run after switching the layout and before setting the bindings. closed check-in: 62fc0288 user: serhiy.storchaka tags: win-keysyms | |
| 19:24 | Fix for [b086bb1d61]: ttk::style command moves ttk::panedwindow sashes. check-in: 843ddd2f user: csaba tags: core-9-0-branch | |
| 19:11 |
Document that a cloned menu is the one which is posted [911951]
A menu which is used as a menubar or is torn off is not posted itself: its clone is posted, and on Windows and macOS the menus are drawn by the system, so no Tk window is mapped at all. winfo and wm therefore report nothing useful for such a menu and for the menus of its cascade entries, which is what the ticket describes. leaf check-in: 1742a9e8 user: serhiy.storchaka tags: doc-menu-clone-geometry | |
