Folks:
I have been trying to track down a problem with toplevel menus.
I have made a good deal of progress which I wanted to describe,
but now I have a few questions. Any help soon would be much
appreciated.
Basically, the problem is that the new Tk way of setting a
menu, that is for a toplevel widget t, and a menu m:
(t 'configure :menu m)
does not work. Note that this way of configuring the menu is
not documented in STk. I discovered it by looking at the Tk
documentation.
In tkFrame.c I discovered that this config option had not been
made STk-aware with a TK_CONFIG_MENU. I fixed that but
then found another problem: the menus are being created with
a "#." prefix, yet the Tk_MenuCmd() function was putting them
in a hash table using the unprefixed form, then failing to
retrive them later. This I fixed by changing the creation
code to always put these names in the hash table with the #. prefix.
A third problem now appeared which I traced to Tcl_CreateInterp()
in tcl-lib.c. The problem was that the "flags" field of the
Interp structure was not being initialized. There is much less
initialization in this procedure than in the corresponding tcl
code (in tclBasic.c). Are the other initializations known to be
unnecessary? It seems dangerous to assume that they are not needed.
Anyway, I fixed this problem, and came across another, where I finally
came to a dead end. The error message on the console was:
**** Fatal error in STk:
**** ON est dans TclEvalObj
**** ABORT.
The entire body of Tcl_EvalObj is in a "#ifdef FIXME FIXME".
I now have the following questions:
Why is the code this way?
What can I expect if I try to fix it?
Best regards to all,
Paul.
______
Paul Anderson. GrammaTech, Inc.
http://www.grammatech.com
paul_at_grammatech.com Tel: +1 607 273-7340
Received on Mon Apr 26 1999 - 20:50:08 CEST