|
From: Joe E. <jen...@fl...> - 2006-11-23 17:04:47
|
Jeff Hobbs wrote: > > [Joe English] > > At the moment, in Tk CVS HEAD, calling "package require tile" > > in an 8.5a6 interp will break badly. This needs to be fixed > > before 8.5 beta. > > [...] > > It seems that the current major blocker is that the ttk::theme::default > versions differ (and an error is thrown on the different version provide), an > then that the named font TkClassicDefaultFont already exists. > > Putting a catch around those 2 statements allows for tile to be package > required into 8.5. I don't see any reason not to commit those changes ... That isn't the main problem. The main problem is that when tile.so's copy of Ttk_Init() gets called, it replaces the core's copy of the interp-specific data and other internal data structures. This stuff doesn't expect to get deleted until the interp is destroyed; who knows what will happen? I *think* that as long as the app calls [package require tile] before creating any ttk::* widgets, this will be harmless, but I won't swear to it. Another issue that isn't an immediate problem but will become much more severe in the long term is that on ELF-based systems (e.g., most Unixes), most of the entry points in tile.so get resolved to the core's copy instead of tile's. This doesn't hurt today, since both routines are identical at the moment, but down the road it will become a big problem as the internals evolve and diverge. Tk 8.5 apps that call [package require tile] will crash and burn in unpredictable ways if the wrong version of the tile package happens to be lying around on the system. I'd really like to avoid this: putting Ttk into the core was supposed to make deployment easier, and this is a potential landmine field. . . . Re: TkClassicDefaultFont -- this should probably just be removed. It makes the "classic" theme look like 8.4 on X11, but it's a mismatch on Windows, OSX, and X11+Xft. (Plus it creates an extra named font that's almost never used.) And re: ttk::theme::default -- more on that later. --Joe English |