apnadkarni/rbctoolkit

Attribute/option changes not correctly detected and processed with Tk 8.6

Closed this issue · 0 comments

RBC routines makes use of Tk_ConfigureWidget to parse options for
widgets, passing in an array of Tk_ConfigSpec structures. They then
check the TK_CONFIG_OPTION_SPECIFIED flag in those structures to
figure out which options have been modified. This worked in older
(pre-8.6) Tk versions.

In 8.6, Tk_ConfigureWidget does not modify the passed in
Tk_ConfigSpec structures. Rather it maintains an internal
per-interp cache that mirrors the passed in Tk_ConfigSpec array and
modifies the elements of the cached structure instead. Based on the
comments, this is intended to make the option processing
thread-safe (or perhaps interp-specific).

Obviously, this breaks Tk extensions, including RBC, which expect
the flags field in the passed-in structure to have been modified.