I do not see the preceding message I sent, so here it is (and more news below):
I just managed to introduce some bug. No idea where to look, thought someone strong on sockets/streams might have an idea.
All my writes to Tk go thru this for debugging purposes. I can enable/disable/when-icize the write to standard output.
(defun tk-send (fmt$ &rest args) "send a string to wish" (let ((text (apply 'format nil fmt$ args))) (format t "~A~%" text) (format (wish-stream *wish*) "~A~%" text) ))
Now my test window does not come up without the trace. The window appears but no widgets, and the window is unresponsive. I have to have the Windows task manager kill it.
Is this an easy "oh, I know what that is..." for anyone?
Then came.....
by the way, merely using TRACE to see how far I am getting before hanging is enough to make things work. (I will try a counter <g>)
Also, adding force-output does not help.
And now....
As expected, all sends are the same (using a counter to count them). But this makes everything work:
Instead of "wm withdraw ." I do "wm iconify ."
The idea of doing either is to keep the user from having to watch Tk assemble the window widget by widget. Looks funny, feels slow. My Cells-driven approach does not think about when to do things, so it just shoots ideas over to Tk as it thinks of them. :) I could work on that, but beginning with a withdraw or iconify and then ending with deiconify looked like a quick win. Someone on the TCL list told me iconfiy might put an icon on the desktop and to use withdraw instead.
Maybe I should just hold off on the PACK of the top widget(s) in a window until everyone else is packed (the other way to handle creeping widget assembly).
Thoughts?
kt