This file summarizes all changes made to Tk since version 1.0 was
released on March 13, 1991.  Changes that aren't backward compatible
are marked specially.

3/16/91 (bug fix) Modified tkWindow.c to remove Tk's Tcl commands from
the interpreter when the main window is deleted (otherwise there will
be dangling pointers to the non-existent window).

3/16/91 (bug fix) Modified tkColor.c not to free black or white colors:
some X servers get upset at this.

3/18/91 (bug fix) Modified tkShare.c to fix bug causing "DeleteGroup
couldn't find group on shareList" panic.

3/18/91 (bug fix) Several changes to tkListbox.c and tkScrollbar.c to
handle listboxes (and scrollbars) with zero total entries in them.

3/22/91 (bug fix) Fixed a few ='s in tkListbox.c that should be ==.

3/22/91 (bug fix) Fixed error in main.c that caused BadWindow errors
in some cases where wish scripts invoke "destroy ."

3/23/91 (new feature) Added Tk_CancelIdleCall to remove Tk_DoWhenIdle
handler.

3/23/91 (bug fix and new feature) Added -name option to main.c, made
it more clever about choosing name (was always using the name "wish"
on most Unix systems).

3/23/91 (new feature) Added TK_CONFIG_STRING option to Tk_ConfigureWidget,
used it to malloc strings for various widget options that used to be
Tk_Uid's (e.g. button text, message strings, etc.).  Eliminates core
leaks when values change in continuous non-repeating fashion.

3/29/91 (new feature) Added Tk_Preserve, Tk_Release, and
Tk_EventuallyFree procedures to help manage widget records and avoid
premature memory free-ing.

4/4/91 (bug fix) Fixed problem in tkWm.c where top-level window geometry
wasn't tracking correctly when wm-induced size change also changed window
position (e.g. menus wouldn't be displayed at the right places).

4/5/91 (new feature) Added "invoke" option to widget command for buttons,
check buttons, and radio buttons.

4/5/91 (new feature) Added "unpack" option to "pack" command.

4/5/91 (bug fix) Changed tkPack.c to use new Tk_Preserve code and be
more careful about window deletions that occur while repacking is in
progress.

4/6/91 (bug fix) Major overhaul of deletion code in all widgets to use
Tk_Preserve and Tk_Release.  Should fix many problems.

4/6/91 (bug fix) Changed "winfo children" to generate correct lists
when child names have embedded spaces.

4/6/91 (new feature) Added "screenheight" and "screenwidth" options to
"winfo".

4/18/91 (bug fix) Binding mechanism didn't correctly handle very long
%-substitutions in commands (e.g. long path names) and caused memory
to be overwritten.  Modified tkBind.c to fix.

---------------------- Release 1.1, 4/18/91 -------------------------

4/19/91 (bug fix) Inconsistent ICCCM handling of coordinates of reparented
windows causes windows to gradually walk south when moved or resized.
Fixed tkWm.c to patch around the problem.

---------------------- Release 1.2, 4/24/91 -------------------------

4/26/91 (new feature) Added -geometry and -display switches to wish.
Also wrote wish manual entry.

5/3/91 (bug fix) Fixed bug in tkListbox.c that caused garbage to appear
at right edge of window when strings were to large to fit in window.

5/3/91 (bug fix) Fixed bug in tkListbox.c where topIndex wasn't getting
updated when elements were deleted:  tended to cause errors in
communication with scrollbars.

5/16/91 (bug fix) Fixed bug in tk3d.c, which caused core dumps when
consecutive points in a polygon were the same (happened with some
configurations of radio buttons, for example).

5/16/91 (bug fix) Fixed main.c to allow stdin to be redirected.

6/1/91 (bug fix) Make sure that pointers are never used after being
freed.

6/15/91 (bug fix) Fixed bug in tkBind.c that caused current binding
values to not always be printed correctly.

6/15/91 (bug fix) Make sure that interpreters are always unregistered
when their main windows are deleted, and make wish delete the main
window before exiting.

8/21/91 (misfeature correction)  Automatically set source of window
position to "user" in "wm geometry" command, unless it has been
explicitly set to "program".

9/5/91 (bug fix) Modified option code to accept '#' as a comment
character in .Xdefaults files, in addition to '!'.

9/10/91 (misfeature correction) Changed binding mechanism so that
numeric %-sequences are output in decimal instead of hex.

9/19/91 (bug fix) Fixed bug in Tk_DoOneEvent(1) where it wasn't
checking files and X connections properly so it missed events.

10/6/91 (new feature) Reorganized tkBind.c to provide generic "binding
table" structure, which can be used to create bindings on items in
canvases as well as windows.

10/6/91 (new feature) Upgraded buttons and menus to use new tracing
code in Tcl 6.0.  Allows radio buttons and check buttons to both set
and clear themselves when associated variable changes.

10/17/91 (bug fix) Fixed 2 bugs in listboxes: accidentally advanced the
selection when new entries were inserted in the listbox after the location
of the selected item(s), and goofed up on redisplay if selected item
was deleted and then selection was immediately lost.

10/27/91 (bug fix) "pack unpack" wasn't telling Tk that it no longer
manages window;  this led to core dumps in some situations.

10/31/91 (reorganization) Renamed manual entries so that they are no
more than 14 characters in length.

10/31/91 (reorganization) Changed tk.h and tkInt.h so that tkInt.h
doesn't needed to be included by tk.h.

11/3/91 (portability improvement) Eliminated use of "class" as a variable
name, since it's a reserved word in C++.

11/7/91 (reorganization) Many changes to upgrade for Tcl 6.1 including
use of Tcl hash tables instead of separate "Hash_" module.  The "lib"
subdirectory is no longer needed in Tk.

---------------------- Release 1.3, 11/7/91 -------------------------

11/24/91 (bug fix) Fixed bug causing occasional errors if existing bindings
are modified (FindSequence in tkBind.c forget to set *maskPtr).

11/24/91 (bug fix) Used wrong hash table in Tk_GetColorByValue.  Could
cause new entries to get created unnecessarily.

12/2/91 (bug fix) Changed "bind" code to put backslashes in front of
special characters (e.g. [ or \) that appear in %-replacements, so that
they can be parsed cleanly.

12/10/91 (bug fix) Manual entries had first lines that caused "man" program
to try weird preprocessor.  Added blank comment lines to fix problem.

1/2/92 (documentation cleanup) Changed manual entries for Tk_GetBitmap
and the like to make it more clear that the argument must be a Tk_Uid
and not a string.

1/2/92 (bug fix) Fixed problem where scrollbars that were very short or
very narrow (too small to hold both arrows) could cause negative values
in calls to XClearArea, which crashed some servers.

1/2/92 (bug fix) Fixed bug in TkMeasureChars occurring when maxChars
is 0.  Occasionally affected things like message window geometry.

1/3/92 (new feature) Added procedures Tk_GetJustify, Tk_GetAnchor,
Tk_GetCapStyle, and Tk_GetJoinStyle, plus support for these things
in Tk_ConfigureWidget.

---------------------- Release 1.4, 1/10/92 -------------------------

1/12/92 (bug fix) TkMenubutton.c wasn't cleaning up mbPtr->varName
properly during menubutton cleanup if an error occurred during
menubutton creation.

1/19/92 (bug fix) Fixed off-by-one bug in tkListbox.c that caused
scrollbars to display a slider that was too large.

2/10/92 (bug fix) Tk_CreateFileHandler didn't correctly handle case
where new mask was specified for existing handler.

2/13/92 (bug fix) Tk_DeleteAllBindings wasn't correctly removing
bindings from the pattern table:  only did the removal for the
first pattern in a pattern list.

2/15/92 (new feature) Added procedures Tk_DefineBitmap and
Tk_SizeOfBitmap.  Tk_GetBitmapFromData is now considered obsolete
and probably shouldn't be used anymore.  Tk_GetBitmapFromData
is now implemented by calling Tk_DefineBitmap and Tk_GetBitmap.

2/15/92 (new feature) Added "curselection" and "select clear" options
to widget command for listboxes.

2/15/92 (new feature) Added Tk_3DBorderColor procedure.

2/17/92 (relaxed limitations) Changed scrollbars so they no longer limit
the slider position to lie within the object's range:  can scroll off the
end of an object, if the object permits it.  Changed listboxes and
entries to explicitly prevent viewing off the ends.  Also relaxed
listbox index checks so that out-of-range indices are automatically
adjust to fit within the listbox range.

2/19/92 (bug fix) tkWindow.c tended to leave half-created windows around
if a new window's name was found to be in use already.  Fixed to clean
them up.

2/22/92 (new feature) Added -anchor, -bitmap, -height, -textvariable,
-width options to labels, buttons, check buttons, menu buttons, and radio
buttons.  This means that (a) size can be controlled better, (b) bitmaps
can be displayed in any buttons, (c) the position of the text within the
button can be controlled, and (d) a button can be made to display the value
of a variable, continuously updating itself.  Also changed -selector option
so that if it's specified as an empty string then no selector is drawn
for the button.

2/22/92 (new feature) Changed menus to support bitmaps in menu entries:
added new -bitmap option for entries.

2/26/92 (bug fix) "after" command, when invoked with just one argument,
called Tk_Sleep rather than registering a timer handler and looping on
Tk_DoOneEvent.  As a result, it caused the application to become non-
responsive to X events during the sleep.  Changed to use a Tk_DoOneEvent
loop so that it is responsive.

2/26/92 (bug fix) Tk's main program didn't map the main window until
after the startup script returned.  Changed to map the window as a
do-when-idle handler, so that scripts can cause the window to be
mapped immediately with a call to "update" or "after".

2/28/92 (bug fix) "wm withdraw" wasn't working if invoked before window
was originally mapped:  window got mapped anyway.  Fixed so that the
window doesn't get mapped as long as it's withdrawn.

2/29/92 (new feature) Can use "focus none" to clear input focus.

2/29/92 (bug fix) Fixed tkEvent.c to generate SubstructureNotify events
properly.  These weren't being generated previously.

2/29/92 (bug fix) Fixed entries so that newline characters can be properly
displayed (as `\x0a').  Had to change interface to TkDisplayChars in order
to do this (added flags argument).

2/29/92 (bug fix) Change Tk not to update size and position of top-level
windows directly during calls like Tk_ResizeWindow.  Instead, wait until
actual event is received.  This makes updates happen at same time as
callbacks.

3/6/92 (bug fix) TkMenubutton.c was dumping core when a menubutton was
pressed at a time when there was no associated menu for the button.

3/6/92 (new feature) Added Tk script library directory with official
Tk initialization file "tk.tcl".  Other procedures used by Tk are in
other files.  Tk procedures and variables all have names starting
with "tk_".  Also added Wish startup script "wish.tcl", which sources
both the Tk and Tcl startup scripts.  This means that things like
auto-loading and abbreviation expansion are now available in wish.
Added new variables tk_library, tk_priv, and tk_version.

3/6/92 (new feature) It's now possible to set bindings for whole
classes by using the class name in the bind command.  For example,
"bind Button <Enter> {puts stdout Hi!}" will cause a mesage to be
printed whenever any mouse button is entered.  Can also use "all"
to set bindings for all widgets.  Widget-specific bindings override
class bindings which override "all" bindings.

3/6/92 (reorganization) Changed buttons (all flavors) and listboxes to
eliminate all hard-wired behavior.  Instead, default behavior is set
by class bindings in tk.tcl.  Also set up class bindings for menus,
menubuttons, and entries, which previously had no default behavior at
all.  Scrollbars and scales still have hard-wired behavior that can't
be overridden.

3/7/92 (look-and-feel change) Changed listboxes and entries and menus
to use button 2 for scanning instead of button 3.  This is more consistent
with the official Motif use of button 2 for dragging.

3/10/92 (new features) Added more options to "winfo" command:  screencells,
screendepth, screenmmheight, screenmmwidth, and screenvisual.

3/13/92 (bug fix) Event sharing mechanism (tkShare.c) wasn't checking
to see whether window was mapped before sharing events with it.

3/16/92 (bug fix) Tk_SetInternalBorderWidth was passing wrong window to
geometry-management procedures, causing core-dumps when menu buttons
had their border widths changed.

3/16/92 (bug fix) Menus were setting their geometry directory rather
than using Tk_GeometryRequest mechanism.

3/17/92 (new feature) Added -cursor option to all widgets to set the
active cursor for the widget.  Also added TK_CONFIG_ACTIVE_CURSOR
configure type. 

3/18/92 (new feature) Implemented generalized screen coordinates to
allow resolution-independent specification in many cases (but pixel-
based coordinates are still OK).  Added Tk_GetScreenMM(),
Tk_GetPixels(), new configure types TK_CONFIG_SCREEN_MM and
TK_CONFIG_PIXELS.  Changed widgets to use this new configure types
wherever possible (a few of the more complex cases still haven't
been taken care of yet).  Added "pixels" and "fpixels" options to
"winfo" command.

3/18/92 (new feature) First cut at canvas widgets is done and part of
the official Tk now.  Canvases display text and structured graphics,
and allow you to bind commands to events related to the text and
graphics.

3/21/92 (new feature) Added new "place" command.  It implements a
new geometry manager that provides fixed placement, rubber-sheet
placement, and combinations of the two.  Eliminated the commands
"move", "resize", and "map" that were provided by main.c but never
officially supported;  the placer provides all of this functionality.

3/23/92 (bug fix) Fixed bug in tkWm.c where top-level windows were
occasionally not being given the right size.  The problem occurred
when a string of resizes happened all in a row (such as deleting all
the windows in an application and then recreating them).

3/23/92 (new feature) Added Tk_CoordsToWindow procedure and
"winfo containing" command.  These may be used to locate the window
containing a given point.

3/28/92 (new feature) Added "-exportselection" option to listboxes,
so that listbox selection need not necessarily be the X selection.

4/12/92 (bug fix) Changed menu buttons to store name of menubutton
in the associated variable, rather than the name of the menu.  This
is necessary in order to allow several menu buttons to share the
same menu.
*** POTENTIAL INCOMPATIBILITY ***

4/12/92 (bug fix) Fixed core dump that occurred in tkError.c when
removing the first error record from the error list.

4/15/92 (bug fix) Fixed bug in tkBind.c that prevented <KeyPress-1>
event specifications from being processed correctly:  the "1" was
treated as a button name rather than a keysym.

4/18/92 (new feature) Added Tk_DefineCursor and Tk_UndefineCursor
procedures.

4/18/92 (new feature) Major revision to listboxes.  Can now scroll and
scan in both x and y, plus -exporselection option allows selection not
to be exported.  The "view" widget command has been replaced by "xview"
and "yview", and the "scan" widget command has a new syntax.
*** POTENTIAL INCOMPATIBILITY ***

4/18/92 (new feature) Added -exportselection option to entries, so you
can select whether you want the entry selection to be the X selection
or not.

4/24/92 (new features) Added TK_CONFIG_CUSTOM type to Tk_ConfigureWidget,
plus added new flags TK_CONFIG_NULL_OK, TK_CONFIG_DONT_SET_DEFAULT,
and TK_CONFIG_OPTION_SPECIFIED.  Several other new types, such as
TK_CONFIG_CAP_STYLE, were also added as part of implementing canvases.

4/29/92 (bug fix) Changed "-selector" default for menus to have separate
values for mono and color.

4/30/92 (bug fix) Fixed bug in tkListbox.c where it occasionally generated
bogus scroll commands (last index less than first).

4/30/92 (reorganization) Moved demos directory to "library/demos".

---------------------- Release 2.0, 5/1/92 -------------------------

5/2/92 (bug fix) Fixed problem in tkListbox.c where it was doing too many
redisplays after repeated insertions.  Also reduced number of invocations
of scrollbar commands.

5/7/92 (portability improvement) Changed main.c not to use TK_EXCEPTION
flag;  it isn't needed and it causes problems on some systems.

5/9/92 (bug fix) Plugged core leaks in tkListbox.c and tkBind.c

5/9/92 (bug fix) TkBind.c was accidentally deleting bindings during
attempts to print non-existent bindings.

5/11/92 (bug fix) Maximum name length for applications (name used in
"send" commands) was too short (only 20);  increased to 1000.  Also
fixed bug related to over-long names that caused core dumps.

5/13/92 (bug fix) tkShare.c was using a dangling pointer if a share
group was deleted as a side-effect of a shared event.

5/13/92 (bug fix) Various initialization and core leak problems in
tkGC.c, tkSend.c, tkMenu.c, tkEvent.c, tkCanvas.c, tkCanvPoly.c,
tkCanvLine.c, tkListbox.c, tkEntry.c.

5/13/92 (bug fix) Empty entries could be scanned off the left edge,
displaying a garbage character.

5/13/92 (bug fix) Fixed a few problems with window manager interactions,
such as tendency for windows to spontaneously shrink in size.  By no
means are all of the problems fixed, though.

5/13/92 (performance optimization) Changed Tk_GeometryRequest not to
invoke geometry manager unless requested size has changed.

---------------------- Release 2.1, 5/14/92 -------------------------

5/1/92 (new features) Added flags like TK_IDLE_EVENTS to Tk_DoWhenIdle,
plus added "idletasks" option to "update" command.  Tk_DoWhenIdle arguments
look different now, but the change should be upward-compatible.

5/17/92 (new feature/bug fix) Added support for VisibilityNotify events
to the "bind" command.  For some reason they weren't supported previuosly.

5/17/92 (new feature) Added "tkwait" command.

5/17/92 (new feature) Added "grab" command.

5/17/92 (new feature) Added "-width" option to messages.  Also changed 
messages to use the computed (i.e. desired) line length when displaying,
not the actual width of the window.

5/17/92 (bug fixes) Did some more fiddling with tkWm.c in the hopes
of improving window manager interactions.  Now there won't be more than
one configure request outstanding to the wm at a time.

5/17/92 (bug fix) Arrowheads on canvas lines weren't being translated
or scaled correctly.

5/20/92 (bug fix) Page-mode scrolling didn't work correctly for canvases
(wrong windowUnits was passed to scrollbars).

5/20/92 (bug fix) Changed scrollbars not to lose highlight when pointer
leaves window with button down.  Also changed redisplay to double-buffer
for smoother redraws.

5/21/92 (new feature) Added "gray50" and "gray25" as predefined bitmaps.

5/22/92 (new feature) Buttons can now be disabled using the "-state" and
"-disabledforeground configuration options.  The "activate" and "deactivate"
widget commands for buttons are now obsolete and will go away soon.
Please change Tcl scripts not to use them.

5/23/92 (new feature) Entries can now be disabled using the "-state"
config option.  Also improved class bindings for entries to keep the
cursor visible in the window when operations occur.  Also made slight
improvements in the way redisplay is done.

5/23/92 (new feature) Added "-textvariable" option to entries so that
the text in an entry can be tied to the value of a global variable in
a fashion similar to buttons.

5/27/92 (new feature) Added "-textvariable" and "-anchor" options to
messages.

5/28/92 (new feature) Added "-padx" and "-pady" and "-underline" options
to menubuttons.

5/28/92 (feature change) Changed "-width" and "-height" options on
all flavors of buttons and menubuttons so that they are orthogonal
to "-padx" and "-pady".  It used to be that -width overrode -padx
(no padding).  Now they accumulate.

5/29/92 (new feature) Added "-disabledforeground" option to menus and
all flavors of buttons (can specify color for disabled things rather
than just using stipple to gray out).

5/29/92 (new features) Added many new options to menu entries:
-activebackground, -background, -font, -state, -underline.  The
"disable" and "enable" widget commands for menus are now obsolete
and will go away soon.  Please change Tcl scripts not to use them.

5/29/92 (new features) Added "atom" and "atomname" options to "winfo"
command.

5/29/92 (new feature) Wrote tk_listboxSingleSelect procedure, which
can be used to change listbox behavior so that only a single item is
selected at once.

6/1/92 (new feature) Added new modifier names "Meta" and "Alt" for
"bind" command.

6/3/92 (new feature) Added "winfo toplevel" command.

6/3/92 (new feature) Made several changes for greater Motif compliance,
including:
    - menu retention if you click and release in the menu button,
    - keyboard traversal of menus (see traversal.man)
    - no widget flashing if you set $tk_strictMotif to 1

6/15/92 (bug fix) Fixed problem in tkBind.c where command string for a
binding could get reallocated while the command was being executed (e.g.
bindings that delete or change themselves).

6/15/92 (bug fix) Don't allow "tabWidth" field to become zero in tkFont.c:
can cause core dumps for fonts that don't enough information to compute
tab widths.

6/19/92 (bug fix) Fixed bug in binding mechanism that caused structure-
related events to be reported both to the correct window and its parent.

7/14/92 (bug fix) Changed tkColor.c not to free colors for visual types
StaticGray or StaticColor.

7/15/92 (new feature) Text widgets now exist.  They display any number of
lines of text with a variety of display formats, and include hypertext
facilities.  See the manual page for details.

7/20/92 (bug fix) If a top-level window was put in the iconic state to
begin with, it could be deiconified with "wm deiconify .foo" until it had
first been deiconified by hand from the window manager.  Tk was getting
confused and thought the window was mapped when it wasn't.

7/29/92 (bug fix) Don't permit rectangles or ovals to have zero-sized
dimensions.  Round up to at least one pixel.

7/29/92 (new features) Major upgrade to canvases:
    - new item types: arc, window, bitmap
    - added Bezier spline support for lines and polygons
    - rectangles and ovals now center their outlines on the shape,
      rather than drawing them entirely inside the shape
    - new "coords" and "bbox" widget commands
    - new "-tags" option for all item types.
    - new "-confine" option to prevent scrolling off edge of canvas.

8/6/92 (new feature) Added "-width" and "-height" options to frames.
The "-geometry" option is now obsolete and should be removed from Tcl
scripts:  it may go away in the future.

8/7/92 (bug fix) Error messages in Tk_ParseArgv were sometimes including
the option name where they should have included its value.

---------------------- Release 2.2, 8/7/92 -------------------------
