This file is a list of noticed problems and some of their fixes.  It also
lists a couple enhancements made to allow Tk/Tcl to perform better in the
windows environment.

+) Click once on a menu.  After menu is displayed, click on it again.
   Menu is not removed, but is put behind main window.  It seems that the 
   window is activated.  Need to see if we can capture the mouse somehow
   so we can deal with the next button click no matter where it occurs.
   Fixed.

+) Once a button is clicked, you cannot move outside of it.
   Fixed.  This needed a change in xlib/callback.c in the DeliverLeaveEnter
   procedure to check if the mouse coordinates were within the button.

+) The event loop was changed so the application would not busy wait.  It now
   calls XNextEvent() when there are no events available and the TK_NOWAIT
   flag is not set.  tk36/tkevent.c

+) The way GetCapture() is handled has been changed.  Now, <EnterNotify>
   and <LeaveNotify> events are generated when the mouse leaves a button
   that has the mouse captured.  If the "grab" command is run from Tcl, 
   it frees up the captured mouse.  Most of these changes are in
   xlib/callback.c.

+) The cursor for windows was not working properly.  This was because any time
   a cursor was not found for a window, it found it in an ancestor and then
   set it for the window.  It should always look for it in the ancestor if it
   is not set for the window.

+) The handling of the "glob" command was changed to recognize drives at the
   begining of the glob.  These commands now worK:
   glob c:*     # Shows files in the current directory on the c drive
   glob e:*     # Shows files in the current directory on the e drive
   glob c:/*    # Shows files in the / directory of the c drive

   (Previously working)
   glob /       # Shows files in the / directory of the current drive
   glob *       # Shows files in the current directory of the current drive.

+) Deiconifying did not work.  It was fixed with a change in xlib/xcreatew.c

+) Fix to problem with iconifying:
    % wm withdraw .
    % wm iconify .
    % wm state .
    ==> normal  (Should have been iconic)
    Change tk36/tkwm.c

    Additionally, the window now keeps track of its state event when the
    user opens and closes it.  Changes in xlib/topproc.c.

+) The 'wm protocol' has been put back and it now supports WM_DELETE_WINDOW.

+) Bitmaps: supports both Windows bitmaps and X bitmaps.  This code was taken
    from the twin port of Tk from University of Kentucky.  See the file
    xlib/xpixmap.c for more info.

+) Changed the PostScript stuff to be optionally in if POSTSCRIPT is defined 
    in your build rule.  However, bitmaps do not yet generate any PostScript.
    There needs to be a fix to support XGetImage.

+) Added a new event, <Syscolor>, that occurs when the system colors in
    Windows (TM) change.  It is reported for each toplevel window in the 
    system

+) Added new colors that represent Windows system colors.
    The colors are set when the the first color changes.  When Windows
    changes system colors, these do not change it the Tk system right
    now.

    Here is a list of the color names for accessing the system colors:
	SystemActiveBorder
	SystemActiveCaption
	SystemAppWorkspace
	SystemBackground
	SystemButtonFace
	SystemButtonHighlight
	SystemButtonShadow
	SystemButtonText
	SystemCaptionText
	SystemDisabledText
	SystemHighlight
	SystemHighlightText
	SystemInactiveBorder
	SystemInactiveCaption
	SystemInactiveCaptionText
	SystemMenu
	SystemMenuText
	SystemScrollbar
	SystemWindow
	SystemWindowFrame
	SystemWindowText
	

----------------------------------------------------------------------
Release 1
----------------------------------------------------------------------

+) The opendirx() in tcl73/compat/opendir.c that I picked up was not a
    correct implementation.  In would not handle ../ correctly.  I rewrote
    parts of this function to make it more effecient and correct.

+) Got rid of #ifdef in tclcmdil.c that set last = 32000 if on Windows
    or DOS.  This is incorrect under Windows NT as we are running in 32 bit
    mode.  Also got rid of an #ifdef in tclutil.c that did the same sort
    of thing.  Both were locations where "end" needed to be interpreted.

+) fstat() does not seem to work under NT.  Use stat() instead.
    stat.st_size does not seem to hold the correct size of the file.  It
    is too big, is seems.

+) Added some special font names to represent Windows fonts.  They are:
    System, SystemFixed, Ansi, AnsiFixed, Device, OemFixed.  These 
    correspond to standard available fonts on windows systems.

+) Changed defaults to leave the standard cursor when pulling down menus.
    This is the way Windows works.  Changed tk/menu.tcl, tk36/defaults.h
    to get this behavior.

+) Executing processes is now possible.  However, they do not yet clean
    up the temporary files that are created to handle the pipeline.  This
    is because we are not allowed to do an unlink() in Windows.  In
    compat_exit(), files that need to be unlinked are cleaned up.

    The main changes to get processes executing were these:
    * Use console mode for the terminal.  This gives you standard handles
      from which you can create pipes.

      This means that the TbWindow stuff is no longer really used except for
      a disabled window that gets lots of events posted to it.

    * Run the reader of stdin on a thread.  This way it won't blocl any
      part of the execution.

    Problems that exist:
	* You cannot open a pipeline to a command.  This can cause the system
	  to hang.
    
+) Changed init.tcl to properly deal with the semicolon separated PATH
    environment variable from Windows.

+) Set tcl_msWindows variable to 1 indicate we are running under Windows.

+) Support of 'wm iconbitmap ...' and 'wm iconmask ...' is now added.
    The routine to convert from bitmaps to icons taken from Univ of KY port.
    Getting icons to work properly was a major pain in the butt.
    All other 'wm' commands have been returned although many don't really
    have any effect.  Still need to put more window manager type functionality
    in to get them to act more like X.

+) Problem: Toplevel windows don't resize larger correctly.
    Seems to be fixed.

+) Added a flag, "-console" to force the creation of a new console.  This
    is useful if you start from an existing console and you want a new 
    window.

+) Added an icon for the console window.  It is not supposed to be the 
    final look of the icon, but it works for now.

+) Problem: Because of the 2-button mouse problem in Windows, need to have
    a way of dealing with mouse buttons nicely.  Right now, on a 3-button
    mouse, the events show up like this:

    <1> <3> <2>  instead of the standard X way of <1> <2> <3>

    May need to have an easy way to swap these mouse events.  Provide a
    new command?


+) Handling processes correctly:
    What we need is an equivalent to the fork() system call in Unix.
    To simulate what it does, we can create a Laucher process which can
    set pipes up correctly without damaging the environment.

    1. Tcl creates inheritable pipes.
    2. Tcl spawns the Launcher with args = {
	 fd_pipe_stdin, fd_pipe_stdout, fd_pipe_stderr, command, command args
       }
    3. Launcher dup()'s the file descriptors onto 0,1,2 if they are
       not currently there.  0,1, and 2 may need to be closed before this
       occurs (depends on NT bugs).
    4. Launcher closes all fds (3-MAX_FD)
    5. Launcher spawns the process specified in command.
    6. Launcher waits until process exists, then it exits.

    Process are now handled by the tclspawn.exe process.  It needs to be
    located in the same directory as the wish executeable or somewhere in
    your path.

+) Added another option, -iconic, that specifies that the terminal should
    start up in iconic mode.

+) 'winfo containing' command not yet working.
    Use the WindowFromPoint function to get the value for this function and
    maybe ChildWindowFromPoint().

    This now works, but it was done with #ifdef's.

+) Need to disable reading of stdin when processes are executed that
    may use the normal stdin.
    Restore at exit.

+) In the canvas, a bunch of items did not show up.
    This has now been fixed--more problems where some things expected XPoints,
    others expected POINTs

+) Put in a new atexit() function and a compat_exit() so that atexit()
    callbacks would work.  They don't seem to work under MSVC20 C library
    pre-release library.


----------------------------------------------------------------------
Release 2    August 25, 1994
----------------------------------------------------------------------

+) Fixed bitmap handling.  Bitmaps that had widths not divisible by 16
    were messed up.

+) Fixed a bug in Tk in tkbutton.c, tkmenubutton.c, tkmessag.c, & tkscale.c.
    With bitmaps, if the window was too small to contain the full bitmap,
    the bitmap would not show up at all.  With normal X windows, it would
    show up, but in the wrong place.  See the file TK_PROBLEMS for more
    details.

+) Fixed a problem with stippled patterns in canvas.  Needed to have the
    set stipple/tile origin actually do something.  Changes made to
    xlib/xgraphics.c

+) Changed TclSetupEnv() so that it does not assume that there is a '='
   in every environment string.  The reason for this is MSVC20 Beta creates
   a bad environment string without any '='

+) Added more functions to the xlib compatability library.
   Added another queue for file events.  Added two new functions,
   XNextFileEvent() and XFileEventsQueued(), that are not part of the 
   X library, but they make the implementation of the Tk event loop
   that works with sockets much easier.  These two functions are a
   superset of XFileEvent() and XFileEventsQueued().  The flags they
   can take are an OR'ed combination of X_Queue and File_Queue.

+) Changed tkwm.c to use more of the standard Tk code.  Events are now
   waited for instead of assuming they will occur immediately.  This
   cleared up some problems that occurred after I made the event code
   put more than 1 event at a time onto the queue.

+) Mainly fixed a problem where random parts of the screen would show up
   in various parts of the Tk display.  The reason this occurred was 
   bitmaps and windows can have the same identifier.  The IsWindow() call
   would sometimes return TRUE for a bitmap.  I created a call that instead
   checked to see if the drawable is a bitmap--IsPixmap().  This is not a
   complete solution, but it works much better than before.

+) The Tk_CreateFileHandler works for Windows sockets and not normal files.
   I may have to play some interesting tricks with sockets to get the
   addinput extension to the blt toolkit to work.


----------------------------------------------------------------------
Release 3    September 15, 1994
----------------------------------------------------------------------

+) Changed the way Tcl shells and wishes get started.  In the wish
   directory, there is now a file, common_sh.c, that has the ability
   to initialize any type of shell.  Files like wish.c and tclsh.c
   call common_tclsh() to do all the special Windows initialization
   before calling Tcl_Main().  Tcl_Main() is used instead of main()
   in the Tcl libraries.  It takes an extra paramter, sock, which specifies
   if a socket is being used and what the socket is for stdin.

+) Removed the winio directory since it was no longer being used.

+) Fixed a bug I introduced in xlib where bitmaps in X11 bitmap file 
   format do not show up correctly.

+) Using compat_isatty() instead of isatty().  It always returns 1.  This is
   so rlogin sessions work properly since previously, isatty() returned 0 for
   rlogin sessions.  Added a fflush(stderr) before printing the prompt
   because the rlogin sessions are not thought to be ttys by the system.
   Removed all calls to the Windows subsystem so dpsh and tclsh will work
   in a rlogin session.

+) Changed the event loop to more closely resemble the normal tk36 event
   loop, fixing a couple problems with idle events in the process.

+) Changed the tclspawn executable to handle .bat files correctly.  Also
   changed init.tcl to find .bat files that exist.

+) The %X and %Y fields in some events, particularly ButtonDown and ButtonUp
   events, were not set correctly because the xlib compatability library was
   not filling those fields in.  Now they are being filled correctly.

+) Stdin reader thread is only created if necessary.

+) Double clicking now works.  I needed to treat a double click in Windows
   just like a normal click and then let Tk turn it back into a double click.
   Had to add the CS_DBLCLKS style to all windows that were created.

+) Changed some of the LeaveNotify and EnterNotify event generation code.  It
   now more closely follows the guidelines specified in X.  It might even
   be correct.  This fixed a small problem with menus.

+) Pressing a button in the non-client area of the window will cause a menu
   to be unposted if it is posted.  Now button events are generated in
   topproc.c for non-client area button events when a grab is occurring.

----------------------------------------------------------------------
Release 4    September 23, 1994
----------------------------------------------------------------------
+) Fixed a bug in common 'winfo screenvisual .'.  The problem was in the
   Xlib compatability library because no visual was ever allocated.

+) Much of the BLT toolkit is now supported.  Rotated text is not yet 
   supported as well as anything that relies on XGetImage() or XPutImage().
   I am working to put these routines in, but they are not there yet.

+) Made some changes to xlib compatability library to support more X functions.

+) Made some changes to xlib compatability library to speed displaying
   text that has no stipples in its foreground or background.  This helps
   to speed the toolkit slightly.

+) Fix to the event loop of dpsh in the case where the absolutely nothing
   that can occur.  Previously, this went into a busy wait; now it no longer
   does.  Fix to the wish event loop so that select() will be called with
   no timeout in Phase 4.  Sometimes, we cannot wait for the SocketNotify
   event before we expect something on a socket.  This allows dpwish to
   pass the modified Tcl-DP test suite.

+) Fixed Tdp_SocketIsReady().  This was not returning the correct result
   because the select() was done incorrectly.

+) If a 3D shadow color is the same as the background, recompute the shadow
   as half of either the light color and the background or the dark color
   and the background.  This forces the background and the shadow never to
   be the same color.  (Turned off right now in tk3d.c.  Will be turned on
   only more than 16 colors are supported.)

+) tclspawn.exe did not execute correctly if it was in the PATH but not
   in the same directory as wish.

+) Fixed a bug where EnterNotify and LeaveNotify events were not generated
   if a window was moved out from underneath the cursor.  The 15-Puzzle
   Demonstration in the Widget Demo showed this behavior.

+) Fixed the biggest problem with grabs.  The main cause for strange behavior
   in grabs was the Xlib compatability library set the state field of the
   ButtonPress and ButtonRelease events to be the _current_ state of the
   mouse keys, not the state just _before_ the event occurred.  This messed
   up the tkgrab code which expected the proper state.

+) Fixed cascaded menu problem.  Problem occurred because TopLevel windows
   have parents under Windows and not under X, so my logic for delivering
   events failed in callback.c.  Now, I check to see if a window in a chain
   is a TopLevel window.

+) Added support for the 'send' command.  It is implemented in tk36/tkSendMS.c
   and not tk36/tksend.c.  In addition to the 'send' command,
   there are a couple new commands to deal with DDE enabled applications.
   The commands are 'dde_request' and 'dde_execute'. Here are a couple of
   examples using these commands.

	# Display Program Manager group Main as an open window
	dde_execute progman progman {[ShowGroup("Main",4)]}

	# Display Program Manager group Main as an icon
	dde_execute progman progman {[ShowGroup("Main",7)]}

	# Get a list of program groups in the Program Manager
	dde_request progman progman progman

	# Get a list of program groups in the Main window
	dde_request progman progman Main

	# Send to another wish
	send {wish.exe #23} winfo children .

   You could use these commands to install programs with Tk.

+) Major redoings of how Properties are handled.  All property names are
   first turned into global atoms.  This will probably cause problems for
   Win32s because of Windows 3.1's limit of 37 global atoms, but it could
   use local atoms instead of global atoms.

+) Bitmap background color setting did not work in canvases.  The XCopyPlane
   routine was at fault here since it never set the background.

+) Fixed the event loop to stop it from using 100% of the CPU.  Bug was
   introduced in a previous cleanup of the event loop.  Moved the label
   "nextevent" to a better place in the code.

+) Made a couple of small changes to get the system to compile with the
   release version of MSVC++2.0.

+) Fixed bug where a change to a window title would not occur immediately.

+) Fixed the problem where toplevel windows did not always resize correctly.

+) Fixed problem with how stdin is handled.  You can now paste into the
   shell and everything will be handled properly in both dpwish and wish.
   Additionally, you can start a wish for within a wish, and input will be
   handled properly.

+) Fix to event loop to get timers functioning properly.  Sometimes, MS
   timers fire just a wee bit too early.  In these cases, reset the timer
   and fire again.

+) Improved the way that blocking sockets are handled.  WSAAsyncSelect()
   causes the sockets to become non-blocking.  If the socket should be
   blocking, select() is called for the socket before recv() or send() is
   called.  In tcl73/compat/winio.c, all calls to gets(), getc(), and others
   are assumed to be blocking.  This could be a problem.  To fix, need to
   tell winio.c which sockets are meant to be blocking and which are meant
   to be non-blocking.  It can then block only on the ones that should
   block.  When the sockets became non-blocking, they would busy wait
   while trying to recv() something.  The changes should help.

+) Fix to the way WSAAsyncSelect() gets called for sockets.  We were not
   re-enabling asynchronous notification unless we called one of the 
   re-enabling routines--not guaranteed in our event loop.  Now, call
   WSAAsyncSelect() to turn it off and then back on automatically.  It
   is possible that only one call to WSAAsyncSelect() is necessary.

+) Fix to XNextFileEvent() where SocketNotify events and TimerNotify
   events can no longer end up on the main X event queue instead of
   getting returned.  Now, dpwish passes the confidence tests.

+) Changes to tkwm.c to fix 'raise' and to make sure resizing works
   properly.

+) Put tclLink.c back into the Tcl source tree.  Somehow it had been left
   out.  Added exports for Tcl_LinkVar and Tcl_UnlinkVar to the DLL exports.

+) Fixes to fonts.  I broke fonts back in Release 2.  They are working better
   now.

+) Added recognition of X type fonts.  Well-formed font names work the best,
   but even beastly wildcarded names should work OK.

+) Cleanup in the X compatability library.  Unused code removed, and lots
   of new Tcl styled comments were added.

+) Lots of changes to the Xlib compat library to clean up code, add
   comments, and get it to work with the tk test suite.  A couple tests
   still fail because of problems in the compat library, but overall,
   it works very well.

+) Restructuring of the Makefiles.  Supposed to make adding modules to
   the system easier, but I'm not sure this was accomplished.

----------------------------------------------------------------------
Release 5    December 10, 1994
----------------------------------------------------------------------
