Cdk Version Change List
Copyright Mike Glover, 1995, 1996, 1997, 1998, 1999
Modifications copyright Thomas E. Dickey 1999-2005, 2006
-------------------------------------------------------------------------------

This file outlines all of the changes/additions from one release to another.

2006/05/07
	+ reduce the number of calls on touchwin(), which is used mainly for
	  cleanup after moving a window.
	+ improve focus in alphalist.c and fselect.c to ensure that the
	  dependent scroll widget highlights data after losing focus to the
	  entry widget (report by Harry Brueckner).
	+ add getCDKScrollCurrentItem(), setCDKScrollCurrentItem(),
	  getCDKScrollCurrentTop() and setCDKScrollCurrentTop().
	+ add getCDKFselectCurrentItem(), setCDKFselectCurrentItem(), use these
	  in fselect_ex.c to illustrate how to modify list displayed by
	  the fselect widget.
	+ add getCDKAlphalistCurrentItem(), setCDKAlphalistCurrentItem(), use
	  these in alphalist_ex.c to illustrate how to modify list displayed by
	  the alphalist widget.
	+ add copyCharList(), copyChtypeList(), lenCharList(), lenChtypeList().
	+ fix misformatted cdk_display manpage, which did not show vINT
	  and some other data properly (report by Dominik Douville-Belanger).
	+ split-out cdk_display.c to eliminate repeated logic in entry.c,
	  matrix.c and mentry.c, and implement hidden fields for the matrix
	  widget.
	+ correct box-height for marquee widget.  The box parameter was
	  previously ignored; this correction will make some applications no
	  longer show a box (report by Michael White).
	+ modify logic for KEY_DC and KEY_BACKSPACE so the former only deletes
	  the current character, and the latter only deletes the previous,
	  rather than equating them.  This affects alphalist, entry, mentry,
	  template (request by Harry Brueckner).
	+ suppress conversion of control characters in getcCDKObject() if the
	  character is bound to another.  This was last changed in 2004/8/24
	  (report by Harry Brueckner).
	+ add check in adjustAlphalistCB() in case the list is empty (report by
	  Harry Brueckner).

2006/02/20
	+ correct makefile dependency so $(MAN_DIR) and $(INCLUDE_DIR) are
	  created before headers.sed and manpage.sed, since headers.sh
	  relies on the existence of the destination directory (reports
	  by Marek Lipovean, Marcelo Goes, also Gentoo #123374).

2005/12/30
	+ add some redundant pointer checks, e.g., to entry.c, to avoid core
	  dump if one tries building Cdk with NetBSD curses (see lib/32417).
	+ split up traverseCDKScreen() to allow customized flavors of that to
	  be written in a calling application using the pieces: 
	  traverseCDKOnce(), setCDKFocusFirst() (request by Jorgen Lundman).
	+ restore assignment of selectedItem in setCDKRadioCurrentItem() which
	  was dropped in 2005/04/24 (report by Fu Steve X).
	+ modify refreshCDKScreen() to ensure that only one widget will have
	  focus, i.e., the first which currently has focus, or if none, then
	  the first visible one (report by Fu Steve X).
	+ use cleanCDKTemplate() consistently in the template widget, ensuring
	  that the editing position is updated, and that the proper length is
	  used when clearing memory (report by Fu Steve X).
	+ modify calendar, radio, scroll, selection widgets so the cursor is
	  shown at the beginning of the selected item's row for better
	  accessibility (report by Fu Steve X).
	+ add null-pointer check in setCDKViewerInfo() in case caller gives
	  too-large value for list size (report by Jorgen Lundman).
	+ improve traverseCDKScreen() by updating curobj from the
	  getCDKFocusCurrent() function (patch by Jorgen Lundman).
	+ add setCDKFocusCurrent() (patch by Jorgen Lundman).
	+ add configure script option allowing manpage section to be changed
	  from "3" to other values such as "3CDK", e.g., for Debian.
	+ modify getCDKRadioItems(), getCDKScrollItems() and
	  getCDKSelectionItems() to return just the list-size if the list
	  pointer is null.
	+ correct highlighting of selected line in CDKSelection window when
	  the window is scrolled left/right (patch by Jorgen Lundman).
	+ various manpage fixes (report by Jorgen Lundman).
	+ change manpages to use ".XX" macro to indicate aliases, to make
	  the manpage more readable.
	+ eliminate duplication between cdk_util.3 and cdk_misc.3 manpages
	  (dialogs belong in the former, for instance).
	+ modify alphalist, itemlist, radio, selection and swindow to allow
	  creating a widget with an empty list (request by Harry Brueckner).
	+ modify mentry.c case for KEY_RIGHT so one can move the cursor past
	  the end of the string to add new text (report by Harry Brueckner).
	+ modify cdk_params.c to use strtol() rather than atoi() to allow
	  command-line parameters such as -h 0xffff for the slider examples.
	+ modify gen-slider.c to use sprintf/strlen to obtain length of
	  formatted integer types since intlen() does not give correct result
	  for maximum value of unsigned type.  Modify increment/decrement logic
	  to take into account unsigned types (report by Keith J Outwater).
	+ modify cli examples to exit with 255 when reporting an error rather
	  than a -1 which is generally not portable.
	+ fix several memory leaks exposed by valgrind in the example programs.
	+ add configure --disable-leaks option to look for ncurses' debug
	  function _nc_free_and_exit(), using that to help with memory leak
	  checking.  This uses a new header <cdk_test.h> which will not be
	  installed, since it is used only for testing in the build tree.
	> patches by Phuah Yee Keat:
	  + add an IsVisibleObj attribute to all CDK objects so the caller can
	    set some object to be invisible, and calling refreshCDKScreen
	    after that won't display it again, it enables one to dynamically
	    show or hide a particular widget based on user actions.
	    Note: this changes alignments in many of the structs from 5.0,
	    requiring an ABI bump.
	  + improve string length-computation in entry.c, allowing a 1-char
	    field, and also allowing movement past end of text with KEY_END.
	  + add setCDKRadioSelectedItem() and getCDKRadioSelectedItem().
	  + fix some memory leaks by adding cleanCDKObjBindings() into all of
	    the _destroyXXX() functions, modify cleanCDKObjBindings() to free
	    and null (obj)->bindingList.
	+ fix makefile for installing manpages when building outside of the
	  source directory (patch by Mike Castle).
	+ remove obsolete lsm file
	+ review/correct some functions listed in manpages but not implemented,
	  and the reverse (report by Rajat Das).
	+ add setCDKMatrixCB() (report by 'zam).
	+ update configure script (mostly fixes related to CF_XOPEN_SOURCE).
	+ update config.guess, config.sub

2005/04/24 - T.E.Dickey <dickey@his.com>
	+ bump major version to 5 (overdue).
	+ add built-in bindings for '<' and '>' to KEY_HOME and KEY_END
	  for radio.c, scroll.c, selection.c, swindow.c and viewer.c
	  (patch by Thorsten Glaser).
	+ add manpages for some of the non-widget utilities:
	  cdk_compat.3, cdk_objs.3, cdk_params.3 and cdk_util.3
	+ correct drawCDKTitle, which did not account for border-size in
	  vertical position of titles.
	+ change addCDKScrollPosition() to not set the current item to the
	  beginning of the list.
	+ add insertCDKScrollPosition(), to allow insertions before the current
	  item.
	+ add a check in scroll.c to prevent overflow if the list is empty.
	+ modify deleteCDKScrollItem() to ensure the current item is on a
	  valid position after the deletion.
	+ modify setCDKScrollPosition() to avoid scrolling if the target is
	  already on the screen.
	+ make similar simplifications to radio.c and selection.c as in scroll.c
	+ simplify and make consistent bookkeeping in scroll.c using new
	  utility functions.  As a result, addCDKScrollItem() and
	  deleteCDKScrollItem() update the size of the scrollbar toggle (report
	  by Fu Steve X).
	+ improve resequence function from 2005/03/23 by preserving attributes
	  in the target chtype array.
	+ modify scroll_ex.c, binding 'a', 'i' and 'd' to add, insert and
	  delete lines respectively (adapted from example by Fu Steve X).
	+ modify makefile so that cdk_config.h (which is generated by the
	  configure script) is not removed by "make clean".
	+ modify makefile to work around limitation of Solaris make program
	  which was confused by a header dependency in a "::" line (report by
	  Fu Steve X).
	+ modify makefile and scripts for configure --srcdir (adapted from
	  patch by Mike Castle).

2005/03/23 - T.E.Dickey <dickey@his.com>
	+ modify deleteCDKScrollItem() to resequence numbers (request by Fu
	  Steve X).
	+ cleanup memory allocation in scroll.c, make addCDKScrollItem
	  reallocate the scroll widget's arrays (report by Fu Steve X).

2005/03/08 - T.E.Dickey <dickey@his.com>
	+ correct logic of deleteCDKScrollItem(), which did not preserve the
	  final null-pointer at the end of the list (report by Fu Steve X).
	+ add isCDKOBjectBind() to simply check if the given object/key
	  combination is bound, rather than invoke the bound function.
	+ modify binding.c so that all of the functions share the same logic
	  for mapping the given object to the bindable object, e.g., the entry
	  widget for alphalist and fselect composite widgets.  In particular,
	  checkCDKObjectBind() and getcCDKObject() did not use the same binding
	  data. 
	+ correct initialization of traverseCDKScreen(), which required two
	  tab keypresses to make the first traversal (report by Fu Steve X).
	+ update configure script checks for _XOPEN_SOURCE, etc.
	+ updated config.guess and config.sub
	+ correct prototype shown in manpage for setCDKScroll() (report by
	  Stefan Heimann).
	+ correct equivalent expressions in setCDKRadioItems() and
	  setCDKSelectionItems().
	+ correct expression in setCDKScrollItems() which caused the updated
	  window to shrink by 2 lines (report by Stefan Heimann).

2004/12/24 - T.E.Dickey <dickey@his.com>
========================================
	+ correct expression in CDKCalendarField from 2004/08/31 changes, which
	  caused it to show only 6 days/week, broken by a fix for
	  demos/appointment (reports/patches by Ryan Flannery and Greg Martin).

2004/11/07 - T.E.Dickey <dickey@his.com>
========================================
	+ correct top-level Makefile.in to remove libtool's auxiliary files
	  in the "make clean" rule.
	+ amend simplification of writeCharAttrib(), ensuring that attributes
	  passed in the chtype-string are not ignored (report by Benoit
	  Bidoggia).

2004/10/04 - T.E.Dickey <dickey@his.com>
========================================
	+ correct logic of writeBlanks(), which did not check for malloc
	  failure and made an unnecessary call to freeChar().
	+ simplify draw.c a little by using writeCharAttrib() and
	  writeChtypeAttrib() to implement writeChar() and writeChtype().
	+ revert 2002/07/27 change that used waddchnstr() in writeChtype(),
	  since it does not render control characters (report by Mike Leib). 
	+ fix an infinite loop in viewer.c when displaying control characters
	  such as form-feed.

2004/08/31 - T.E.Dickey <dickey@his.com>
========================================
	+ add a simple compatibility header (cdk_compat.h), which can be
	  put in an application's include-path when compiling old applications
	  against new/old Cdk.
	+ update libtool ABI to 2.0.0 since several items are added to CDKOBJS,
	  as well as cleanup of slider- and scale-header templates.
	+ add check for ANSI compiler, needed for example with HPUX 10.20.
	+ ifdef'd out nonfunctional saveData and refreshData methods of entry
	  and itemlist widgets.
	+ moved functions for setting background color or attribute into
	  CDKOBJS.
	+ moved pre- and post-processing data into CDKOBJS, changing the
	  functions that set those per-widget into macros using cdk_objs.c
	+ modify scale and slider widgets to allow the user to directly modify
	  the value by typing over it (request by Keith Outwater).
	+ add slider widgets for types float, unsigned.
	+ add scale widgets for types double, unsigned.
	+ add script gen-scale.sh, and templates (e.g., gen-scale.c,
	  gen-scale.h) to allow easy generation of scale and slider widgets of
	  various types.  Use this to replace the existing CDKSCALE, CDKFSCALE,
	  CDKSLIDER widgets (discussion with Keith Outwater).
	+ adapt fix from dialog for porting getmaxx(), etc., to systems such
	  as HPUX which do not provide these legacy definitions.
	+ remove duplicate vinstall.c from examples directory.
	+ modify install scripting to translate generated names in cdk_config.h
	  to add "CDK_" prefix to most, reducing name-pollution.  These names
	  are used to allow applications to compile against the Cdk header
	  files, but are otherwise of no general interest.  In particular,
	  "PACKAGE" is no longer conflicting (report by Phuah Yee Keat).
	+ add earlyExit member to CDKOBJS, using this to implement a method
	  for applications to specify whether the widget's exitType should
	  be modified after calling checkCDKObjectBind(), and what value
	  (discussion with Bernhard Walle, comparing with NetBSD variation).
	+ correct logic in calendar widget for decrementing day- and
	  month-values.
	+ modify treatment of exitType field so it is only set to vESCAPE_HIT
	  if an escape character was received.  Hide most of the internal
	  details of exitType, making it available as an object value (but
	  retaining the widget field to ease upgrading old applications).
	+ implement shadow option for newCDKMarquee().
	+ rewrite activateCDKMarquee(), eliminating an infinite-loop bug
	  found in traverse_ex.c, as well as making it work properly with and
	  without box-outline.
	+ modify deleteCursesWindow() to call eraseCursesWindow(), so that
	  deleting an object will also erase it, following the various manpages
	  comment about removing the object from the screen (report by
	  Mukovoz I.S.).
	+ correct positionCDKObject() for CDKSCREEN's which do not happen to
	  be the same size/shape as stdscr.
	+ change layout of menus to account for parent window's origin
	  since subwin() since uses absolute screen position (report by "Anna"
	  w/o a return address).
	+ correct off-by-one in positionCDKObject() which prevented user from
	  reaching the right- and bottom-margins.
	+ fix a few limits on sprintf's involving strings.
	+ eliminate fixed array limit MAX_OBJECT in CDKSCREEN.
	+ use CTRL() macro consistently in preference to CONTROL().
	+ remove delwin(stdscr) from example programs since it is both unneeded
	  and nonportable.
	+ use EXIT_SUCCESS and EXIT_FAILURE consistently in example programs.
	+ remove all KEY_xxx symbols which are in X/Open curses from curdefs.h
	+ remove all ACS_xxx symbols from curdefs.h
	+ remove all A_xxx symbols from curdefs.h
	+ add/use isChar() and CharOf() macros to get rid of A_CHARTEXT usage.
	+ fix menus to allow them to scroll if there are too many entries to
	  fit on the screen.
	+ collect most uses of touchwin/refresh into new function
	  refreshCDKWindow().
	+ clear background of menu windows, in case they are drawn over another
	  widget.
	+ correct length of title in menu if more than one is placed on the
	  right side of the screen.
	+ add getcCDKBind() function, to which keys can be bound for simple
	  translation of the inputs via getcCDKObject().  Use this in
	  examples/traverse_ex.c to bind F1 to menu.
	+ eliminate mapChtype() function, since it could conflict with curses'
	  definitions.  Use the given key value instead, since it is always
	  positive.
	+ use KEY_MAX in preference to MAX_BINDINGS symbol.
	+ eliminate internal use of literal backspace, DEL, tab, newline and
	  carriage-return constants, etc., by mapping them to KEY_BACKSPACE,
	  KEY_DC, KEY_ENTER, etc., in getcCDKObject().
	+ modify examples and demos to read input using getcCDKObject(), to
	  solve problems with stdscr refresh overwriting the widgets.
	+ modify matrix.c and menu.c to read input using getcCDKObject(), like
	  all of the other widgets.
	+ rewrote examples/traverse_ex.c to use menus to select the left,
	  center and right widgets used for demonstrating traversal.
	+ modify traversal to update object focus properly if a menu action
	  removes or moves the object associated with the focus.
	+ cleanup menu in traverse.c if escape character is used to cancel it.
	+ move curs_set() calls out of focus/unfocus functions, into traverse.c
	+ remove the SIGBUS/SIGSEGV handler, since it is redundant.
	+ updated configure script (CF_ADD_CFLAGS, CF_CHECK_CACHE,
	  CF_GCC_WARNINGS, CF_NCURSES_LIBS, CF_PROG_EXT, CF_WITH_DBMALLOC,
	  CF_WITH_DMALLOC, CF_WITH_LIBTOOL, CF_WITH_WARNINGS, CF_X_ATHENA,
	  CF_X_TOOLKIT).
	+ updated config.guess, config.sub
	> patches by ewigg (Ed Wigg?) for fselect.c:
	+ add a range check to ensure that filename completion at the end of
	  the list does not reference past the end of the list.
	+ correct the value returned from filename completion (fixes in
	  2002/07/27 mistook an assignment that removed the last character
	  of the result - it is actually used to trim the "/", "@" or similar
	  character from the displayed filename).
	+ remove an unnecessary if statement.
	> patches by Phuah Yee Keat:
	+ enable focus in mentry.c, radio.c
	+ implement unfocus in entry.c
	+ implement focus/unfocus in mentry.c, template.c
	+ add setCDKRadioCurrentItem() and getCDKRadioCurrentItem().
	+ improve entry.c:  When the user types until the last character, do
	  not shift the cursor to one character beyond the end of the maximum
	  value allowed in the field, that will create an extra '.' that will
	  give the user an impression that he can still enter more characters,
	  when he actually can't.
	+ fix two core dumps with Solaris curses in scroll.c:
	  + On solaris curses, just pressing the "down" key on a scroll list
	    will coredump, on certain sizes of the scroll list.  On my
	    fullscreen test, it will coredump on any number of items unless if
	    the number of items is a multiple of 5.  I assume that it's because
	    that under certain conditions, the togglePos actually exceeds the
	    boundary at the end of the scroll bar.  Does not happen in ncurses.
	  + On solaris curses, press 'G' will coredump.
	    Does not happen in ncurses.
	+ make wording in COPYING consistent with other fixes from 1999/05/15 
	  (report by Ahmad Attia).

2003/12/10 - T.E.Dickey <dickey@his.com>
========================================
	+ bump version to 4.9.11 (corresponding source from Mike Glover added
	  install.sh to tarball; no other source changes were made).
	+ rename "install.sh" to "install-sh" to work around bugs in certain
	  make-programs.
	+ allocate marker[] array in calendar dynamically.  Reduce
	  corresponding array limits to reasonable values.
	+ add getCDKCalendarMarker()
	+ correct seconds in calendar's return value.
	+ eliminate fixed array limits from dialog widget.
	+ eliminate fixed array limits from label widget.
	+ eliminate fixed array limits from selection widget.
	+ eliminate fixed array limits from viewer widget.
	+ eliminate fixed array limits from buttonbox widget.
	+ eliminate fixed array limits from matrix widget.  Passing around
	  1000x1000 arrays was inefficient, and caused core dumps in the Perl
	  binding for this widget.
	+ correct one of the attrbox() calls in drawCDKMatrixCell(), which used
	  a left-tee where a right-tee was needed (report by William L Davis).
	+ add setCDKMatrixCells(), redefining setCDKMatrix() as a macro to
	  call it. 
	+ add cleanCDKMatrixCell().
	+ correct position for right-aligned menus, which was off by one from
	  2003/11/30 changes (report/patch by William L Davis).

2003/12/01 - T.E.Dickey <dickey@his.com>
========================================
	+ correct logic in char2Chtype() for <#UL>, <#UR> and <#LR>, broken in
	  1999/06/05 (report by William L Davis).

2003/11/30 - T.E.Dickey <dickey@his.com>
========================================
	+ remove borderSize parameter from alignxy().
	+ modify all widgets to account for borderSize consistently, allowing
	  one to display a widget that uses the full screen size (report by
	  Phuah Yee Keat <yk.phuah@nestac.com>).
	+ add cdk_params.c, use this to simplify cli programs and add getopt
	  processing systematically to the demos and examples.
	+ correct an off-by-one in baseName() that would return the slash
	  character in the result.
	+ add setCDKCalendarMonthsNames() and setCDKCalendarDaysNames (patch
	  by Stanislaw Bierowka <staszek@pecet.com.pl>).
	+ split-out several files from draw.c since they are wrappers for
	  widgets rather than drawing functions.  Doing this reduces the
	  executable size:  get_index.c, get_string.c, popup_dialog.c,
	  popup_label.c, select_file.c, view_file.c and view_info.c
	+ eliminate static MAX_LINES limit from graph-widget values.
	+ eliminate static MAX_LINES limit from widget titles.
	+ updated configure script, improved checks for curses functions.
	+ updated config.guess, config.sub

2003/11/24 - T.E.Dickey <dickey@his.com>
========================================
	+ display a "processing..." message in setCDKViewerInfo while building
	  the internal data structures (request by Mike Leib).
	+ modify viewer widget to compute the total number of lines to display,
	  making it independent of the listSize parameter.
	+ modify viewer widget to accept a negative listSize parameter,
	  making it count the length of list[], ending with a null.
	+ modify viewer_ex, adding -f, -i and -l options.  The -f option
	  bypasses the fselect widget, specifying the filename directly.
	  The -i option tells whether to interpret embedded markup, and
	  the -l option tells viewer_ex to load the file using an embedded
	  link.

2003/11/19 - T.E.Dickey <dickey@his.com>
========================================
	+ modify searches in viewer widget to allow for overlapping partial
	  matches, e.g., if the pattern is "00A", it will find the match in
	  a line consisting of "000A".  Also corrected logic to matches can
	  extend to the end of a line.
	+ add 'N' to viewer to implement reverse search.
	+ modify ':' command in viewer to start with current line number
	  rather than 0.  Also adjust the size of the scale widget to allow
	  for very large line numbers, e.g., more than 5 digits.
	+ remove an obsolete limit-check in viewer widget that limited view
	  to 4996 lines, fix a few off-by-one indices.

2003/11/18 - T.E.Dickey <dickey@his.com>
========================================
	+ correct viewer widget, making it interpret tabs and non-printing
	  characters for the non-interpreted file viewer case.  The curses
	  library cannot display control characters in chtype's.
	+ add cleanCDKViewer().
	+ rename a few .itemCount members to .listSize for consistency.
	+ eliminate static list-size limit MAX_LINES from swindow, viewer
	  widgets.  Renamed .info, .infoPos, .infoLen to .list, .listPos and
	  .listLen members to be consistent with other widgets.

2003/11/16 - T.E.Dickey <dickey@his.com>
========================================
	+ suppress "." from fselect listing, since it was not useful.
	+ eliminate static list-size limit MAX_ITEMS from alphalist, fselect
	  itemlist, radio, scroll and selection widgets (request by Mike Leib).
	+ change functions that set line-drawing characters to macros, mapping
	  those to method calls in CDKOBJS.
	+ add setCDKEntryBox().
	+ add setCDKMarqueeBox() and getCDKMarqueeBox().
	+ add setCDKMatrixBox() and getCDKMatrixBox().
	+ adjust some title lines to be offset by the borderSize rather than
	  a hardcoded "1" (report by Max Mikhanosha).
	+ strip trailing newlines from text read via pipe in execCDKSwindow(),
	  lost in original cleanup (report by Max Mikhanosha
	  <max@openchat.com>).

2003/04/18 - T.E.Dickey <dickey@herndon4.his.com>
=================================================
	+ for variants built with ncursesw and pdcurses, name the libraries
	  "-lcdkw" and "-lcdkX" respectively.
	+ add a missing assignment to store the result in _injectCDKFScale()
	  (report by Barry Davis <bdavis@eurologic.com>).
	+ fix missing definition of mvwhline(), mvwvline() in pdcurses.
	+ add a .c.i rule in top-level makefile
	+ fix uninstall rule, was missing a line-continuation.
	+ fix several prototypes in manpages which did not match header files
	  (reported by Lucas Gonze <lucas@gonze.com>).
	+ fix a few compiler warnings, e.g., by parentheses in
	  drawCDKEntryField() and drawCDKMatrixCell().
	+ updates to configure script macros
	  + add --with-ncursesw option.
	  + add --with-XawPlus option.
	  + add --with-curses-dir option.
	  + modify CF_DISABLE_ECHO to make libtool quiet also.
	  + use AC_PROG_PATH to find libtool; show the version which is found.
	  + change sed delimiter to '%' to accommodate AFS.
	  + improve/correct CF_HEADER_PATH, CF_LIBRARY_PATH to cover special
	    cases of ncurses/ncursesw configurations.
	  + change ordering of options in CF_ADD_CFLAGS, CF_ADD_CPPFLAGS,
	    CF_INCLUDE_DIRS.
	  + workaround gcc 3.x defects in CF_ADD_INCDIR.

2002/08/09 - T.E.Dickey <dickey@herndon4.his.com>
=================================================
	+ fix entry, matrix, template, viewer widgets to display 8-bit input
	  characters (reported by Bernhard Walle <bernhard@bwalle.de>).
	+ modify manpage install to create links for each function name listed
	  in the NAME section.
	+ correct cursor location in dialog's radio-box, which was left on the
	  separator line (reported by Peter Farley <pjfarley3@yahoo.com>)

2002/07/27 - T.E.Dickey <dickey@herndon4.his.com>
=================================================
	+ several changes to make destroyCDKScreenObjects() and
	  destroyCDKScreen() actually work (needed for perlcdk):
	  + record all objects and screens created/destroyed, in cdkscreen.c
	  + reimplement destroyCDKObject() by a function _destroyCDKObject(),
	    which first does an erase for the given object, then calls the
	    destroy method, and finally frees the object.
	  + add a check in each erase-method to ensure that the object is still
	    valid.
	+ add check in setCDKGraphValues() to ensure that X and Y scales are
	  nonzero, since they are used as denominators.  This makes perlcdk's
	  graph example work.
	+ add configure check for curses feature which would allow one to move
	  a subwindow, or (in the case of NetBSD curses) at least compile.
	+ add configure check and fallback for addchnstr() to accommodate
	  NetBSD's partial implementation of curses.
	+ move version information to VERSION file.
	+ add --with-libtool configure option
	+ make most wgetch() calls use the object's inputWindow via the
	  getcCDKObject() function.
	+ improve type-checking and array-limits in cdkscreen.c
	+ remove cdktype member from CDKSCREEN since it is redundant.
	+ eliminate several fixed-buffers with new function writeBlanks().
	+ interpret home/end keys in entry widget.
	+ warn about special keys such as insert which are not recognized in
	  alphalist, entry, matrix, mentry, template (it was using the low 8
	  bits of those, inserting that).
	+ rewrote/simplified dirName().
	+ rewrote/simplified baseName().
	+ eliminate fixed-size buffers in fselect.c
	+ correct a couple of places where fselect.c freed constant memory.
	+ correct an unterminated string in fselect.c tilde-expansion, and use
	  $HOME if no account name is given.
	+ simplified several functions using mvhline(), mvvline() and
	  mvaddchnstr().
	+ add vFSCALE as a valid object type in cdkscreen.c
	+ modify moveCursesWindow(), which did not work with ncurses after
	  2000/9/15 changes to use mvwin() in preference to directly modifying
	  the _begx/_begy members of WINDOW.  That made position_ex not work.
	  The change was originally for NetBSD's curses implementation which
	  does not move derived windows properly anyway.
	+ simplify calls to moveCursesWindow() by moving null-pointer check
	  inside that function.
	+ change tab-expansion in char2Chtype() to expand based on the current
	  length of the string rather than always to 8 columns.
	+ correct limit-checks in stripWhiteSpace()
	+ interpret back-tab in buttonbox.c and dialog.c inject-methods for
	  symmetry with tab.
	+ corrected return-values of button, matrix, scale widgets to match
	  documentation as well as to conform with other widgets.
	+ reorganized inject methods (which may return data of different types)
	  to return the actual data in an area of the widget, and defined macros
	  to preserve source-compatibility.
	+ rewrote initCDKColor() to check if color is available before trying
	  to initialize it, and to use the terminal's actual number of colors
	  in making color pairs.
	+ use 2-digit fields in bind_ex.c for time, date.
	+ modify matrix.c to add borderSize before the column titles, to
	  match the change to box layout.
	+ modify matrix_ex.c to consistently center row-titles.  Some were
	  centered, some were right- and some left-justified.  The change to
	  justifyString() produced an odd effect.
	+ add functions
		CDKVersion()
		chtype2String().

	> patches by Tim Moloney:
	+ added a setCDKxxxBackgroundAttrib() function to all the widgets.
	  This function takes a chtype.  The setCDKxxxBackgroundColor() still
	  exists and converts from a character string to a chtype, but it now
	  calls the new function to eliminate duplicate code.
	+ fix minor bugs in marquee_ex and radio1_ex.
	+ fix an off-by-one error in the dialog widget when it is not drawing
	  its box.  The buttons were displayed one line too high.
	+ add object type to each widget.
	+ correct _drawCDKEntry(), which did not account for whether a box was
	  used when computing layout.
	+ change moveCDKButton() from a function to a macro using
	  moveCDKObject().
	+ add functions
		popupLabelAttrib()
		setCDKButtonboxButtonAttrib()
		setCDKEntryHighlight()

	> integrated/adapted changes by Grant Edwards:
	+ make the destroy function in each widget a method in CDKOBJS.
	+ make the inject function in each widget a method in CDKOBJS.
	  (this was incomplete, and did not provide for different return-types)
	+ add focus, unfocus, refreshData, saveData methods and supporting
	  data to CDKOBJS (not all widgets implement these methods).  See
	  entry.c, itemlist.c, selection.c for example.
	+ store a borderSize value in CDKOBJS for each widget, which is used to
	  reserve space for a box/border around each widget if the Box
	  parameter is true when creating the widget.  Several related changes
	  also made, including modifying the alignxy() interface to add
	  a borderSize parameter.
	+ modify justifyString() to not subtract 1 on each side, since that
	  is generally assumed to be done to compensate for boxes drawn around
	  the text.
	+ change drawCDKItemlistField() to add a highlight parameter.
	+ change the label window to a subwin() in entry.c
	+ hide cursor while in popupLabel() function.
	+ simplified scroll.c, a little.
	+ add files
		button.c
		examples/radio1_ex.c
		examples/traverse_ex.c
	+ added functions:
		destroyCDKScreenObjects()
		getCDKSelectionCurrent()
		setCDKSelectionCurrent()
		getCDKScrollCurrent()
		setCDKScrollCurrent()
		destroyCDKScreenObjects()
		cmpStrChstr()
		chstrncpy()
	+ removed these functions:
		setCDKEntryBox()

2002/04/30 - T.E.Dickey <dickey@herndon4.his.com>
=================================================
	+ correct parsing of <I=xx> in char2Chtype() where "xx" contains digits
	  (patch by Robert R Landon <rl180001@exchange.DAYTONOH.NCR.com>).
	+ updated cdk.spec for RPM (patch by Vladimir Kondratiev
	  <vladimir.kondratiev@intel.com>).
	+ introduce CDKINCLUDES ifdef's so that any of the header files may
	  be included separately.  Previously only <cdk.h> could be included
	  due to interdependencies among the headers.
	+ add some #undef's to cdk.h in case curses.h includes term.h producing
	  a symbol conflict (reported by Kenneth Pronovici
	  <pronovic@skyjammer.com>).
	+ miscellaneous updates to configure script, including workarounds for
	  incompatibilies in autoconf 2.5x.

2002/02/25 - T.E.Dickey <dickey@herndon4.his.com>
=================================================
	+ add cdk_process manpage.
	+ remove redundant description of bindCDKObject() from several manpages.
	+ add rcs identifiers to header files.
	+ add ifdef's in each header file for C++, to make the C externs link
	  properly without requiring the application to declare them (reported
	  in comp.unix.programmer newsgroup by <bigslick_2k@hotmail.com>).
	+ correct typo in template.c introduced in 2000/01/16 substitutions
	  to use macro isPlateChar() which made templates not work with
	  interspersed punctuation (reported by jiny <jiny@ynmail.com>).

2001/12/30 - T.E.Dickey <dickey@herndon4.his.com>
=================================================
	+ remove some redundant wrefresh() calls in various widgets.
	+ correct an uninitialized pointer in cli/cdkalphalist.c
	+ modify cli/samples/alphalist.sh to check for non-empty return from
	  the selection rather than hang attempting to find that account.
	+ remove -B option from cli/samples/alphalist.sh since it should have a
	  value, but does not.
	+ corrected some display-limits in writeChtype() and
	  writeChtypeAttrib().
	+ modify CDKreadFile() to trim newlines from file as read, making it
	  more like the original readFile().  This is needed to prevent the
	  trailing newlines loaded into label widgets from clearing the rest
	  of the line when they are drawn.
	+ add floatized-scale widget (Lutz Mueller <urc8@rz.uni-karlsruhe.de>).
	+ modify headers.sh script to remove gzip'd versions of the manpages
	  just in case some were previously installed that way, i.e., by
	  hand.  The gzip'd version would be found instead of the new install.
	  (prompted by a report by Ron Poulton <thok@technologist.com>).
	+ correct typo in uninstall rule for manpages which made
	  "make installCDKHeaderFiles" remove the manpages after installing.

2001/04/21 - T.E.Dickey <dickey@herndon4.his.com>
=================================================
	+ add an uninstall rule.
	+ move the installed documentation to /usr/local/doc/cdk (it does not
	  belong in /usr/local/include/cdk).
	+ modify install rules so that references to header files such as cdk.h
	  are transformed to <cdk/cdk.h>, which matches the actual install
	  location (reports by Pawel Gajda <pawelg@obop.com.pl>, Carlos Alberto
	  Pereira Gomes <capgomes@usa.net> and Ron Poulton
	  <thok@technologist.com>, who found that Cdk's menu.h conflicts with
	  ncurses' menu.h when building the Perl interface).
	+ correct cli examples' callbacks, which did not return a value.
	+ update config.guess and config.sub
	+ modify CF_CURSES_LIBS to allow build with SunOS 4.x 5lib curses.
	+ split out CF_CURSES_CPPFLAGS from CF_CURSES_LIBS to allow an interim
	  check if the curses implementation is really ncurses.
	+ modify some configure script macros to work when the curses header
	  file is not <curses.h>, e.g., <ncurses.h>.
	+ modify configure script macros to avoid using changequote(), which
	  is broken in the current autoconf alpha versions, e.g., 2.49d.
	+ change configure script macros to use $CPPFLAGS consistently for
	  preprocessor options, and $CFLAG for other compiler flags.
	+ modify several configure script macros which checked for $GCC, to
	  ensure it is not actually the compiler name versus an existence
	  check.

2001/01/06 - T.E.Dickey <dickey@herndon4.his.com>
=================================================
	+ reverted part of 1999/6/5 change, allowing callback functions to
	  return a value.  Note that this makes PROCESSFN and BINDFN use
	  the same prototype (report by Ian Eure <ieure@insynq.com>).
	+ SCO OpenServer does not define S_IFSOCK

2000/09/23 - T.E.Dickey <dickey@herndon4.his.com>
=================================================
	+ change literal 48's in calendar.c to '0'.
	+ eliminate nonprinting/nonspace characters using macro CTRL().
	+ integrated new examples into makefiles.
	+ use raiseCDKObject_ex.c and lowerCDKObject_ex.c to debug/fix the
	  raiseCDKObject() and lowerCDKObject() functions which shared the same
	  defect in 4.9.9 (the code did not properly update two objects, but
	  modified screenIndex of one twice).
	+ modified cli programs to work with CDKreadFile(), CDKsplitString()
	  and CDKcountStrings() since readFile() and splitString() are not
	  provided in this version.

	> reviewed/integrated changes from Mike Glover's 4.9.10 (August 2000):
	+ add examples/raiseCDKObject_ex.c, examples/lowerCDKObject_ex.c
	+ add cli subdirectory
	+ modify itemlist.c to make labels one cell wider.
	+ did not use changes to cdkscreen.c (see 1999/5/15).
	+ did not use casts to unsigned char, since those are incorrect
	  (they are casting chtype's which are wider than a char).

2000/09/15 - T.E.Dickey <dickey@herndon4.his.com>
=================================================
	+ add/use configure check for some curses functions/macros which use
	  internals of the WINDOW struct, which is opaque on NetBSD (patch by
	  Simon Burge <simonb@wasabisystems.com>).
	+ update autoconf scripts (config.guess, config.sub, macros
	  CF_CURSES_LIBS, CF_UPPER, CF_X_ATHENA) to my 20000819 autoconf patch.
	+ revised man-pages:  reorder so that functions are listed
	  alphabetically within the NAME, SYNOPSIS, DESCRIPTION sections, the
	  prototypes shown only in the SYNOPSIS section (and formatted for
	  readability), remove excess wording and convert as needed to use tbl.

2000/08/28 - T.E.Dickey <dickey@herndon4.his.com>
=================================================
	+ add cdk_position.3 man page.
	+ rename cdk_cdk.3 to cdk.3

2000/08/20 - T.E.Dickey <dickey@herndon4.his.com>
=================================================
	+ remove obsolete comments from manpages telling users to define
	  NCURSES for that library.  The configure script creates cdk_config.h,
	  which has settings as needed.

2000/08/20 - T.E.Dickey <dickey@herndon4.his.com>
=================================================
	+ fix some array-overruns in viewer.c if it happens to load a binary
	  file.
	+ fix symbol conflict with newkey in waitCDKLabel(), as well as keycode
	  truncation in that function.

2000/06/28 - T.E.Dickey <dickey@herndon4.his.com>
=================================================
	+ add RPM spec-file (Wai-Sun Chia <waisun.chia@msa.dec.com>).
	+ add Linux-specific makefile rule for generating a shared library
	  (patch by Pawel Gajda <pawelg@obop.com.pl>).
	+ eliminate fixed-length lists assumed in getDirectoryContents() using
	  new function CDKgetDirectoryContents().
	+ eliminate fixed-length lists assumed in readFile() using new function
	  CDKreadFile().
	+ remove unused substring().
	+ use qsort-wrapper sortList() instead of quickSort().
	+ change configure.in to avoid having configure script check for X
	  libraries as a side-effect of adding tests for PDCurses.
	+ updates to configure script macros:
	  CF_CURSES_FUNCS, CF_FIND_LIBRARY, CF_HEADER_PATH, CF_LIBRARY_PATH,
	  CF_NCURSES_LIBS and CF_XOPEN_CURSES
	+ updated config.guess, config.sub

2000/04/09 - T.E.Dickey <dickey@clark.net>
==========================================
	+ modify newwin() call in subwindow_ex.c to account for actual screen
	  size rather than assuming 25 lines (reported by Gary Funck
	  <gary@Intrepid.Com>).
	+ add CF_X_ATHENA and CF_X_TOOLKIT configure macros for --with-pdcurses
	  option, needed if the Xcurses or dependent libraries are static
	  rather than shared.
	+ correct typo in configure check for HPUX 11.x (reported by Bjorn
	  Helgaas <helgaas@rsn.hp.com>).

2000/02/18 - T.E.Dickey <dickey@clark.net>
==========================================
	+ add case for HPUX 11.x use of cur_colr library (reported by
	  Bjorn Helgaas <helgaas@rsn.hp.com>).
	+ add configure option --with-pdcurses, to link with the X11 version
	  of PDCurses.
	+ eliminate quoted includes, in favor of bracketed form.
	+ ifdef'd limits.h, moving that into cdk.h with a fallback definition
	  for INT_MIN and INT_MAX.
	+ minor fixes for building with SunOS 5lib version: configure check
	  for getopt variables, correction to demos/Makefile.in

2000/01/17 - T.E.Dickey <dickey@clark.net>
==========================================
	+ add lib-prefix and executable suffix checks to configure script for
	  port to OS/2 EMX.
	+ add configure check for lstat().

2000/01/16 - T.E.Dickey <dickey@clark.net>
==========================================
	+ drop dependency on usleep(), using napms() which is standard with
	  SVr4 curses.
	+ rewrote mode2Char(), making it table-driven and splitting out
	  mode2Filetype() to make porting simpler, by putting ifdef's for
	  S_ISSOCK in one place only.
	+ use new freeCharList() to reduce clutter.
	+ eliminate casts of NULL, to reduce clutter.
	+ change several uses of control characters in source to use CONTROL()
	  macro.
	+ correct format of date shown in bind_ex.c
	+ correct nonstandard getcwd() usage in fselect.c
	+ change demo and example makefiles to not strip executables.
	+ modify demo/Makefile.in to work around Solaris' make program which
	  does not process ".c" rule as desired.

2000/01/08 - T.E.Dickey <dickey@clark.net>
==========================================
	+ fix compiler warnings with Solaris cc.

1999/12/19 - T.E.Dickey <dickey@clark.net>
==========================================
	+ update email and url for Mike Glover based on 4.9.9 version dated
	  1999/7/29.

1999/06/26 - T.E.Dickey <dickey@clark.net>
==========================================
	+ add configure options --with-dbmalloc and --with-dmalloc to simplify
	  testing with those libraries.
	+ correct error in rewrite of char2Chtype which broke repeat-counts.

1999/06/05 - T.E.Dickey <dickey@clark.net>
==========================================
	+ correct reference to uninitialized memory in bindCDKObject()
	+ add/use BINDFN_PROTO macro to simplify maintenance of Perl extension,
	  corrected corresponding functions to be typed void.
	+ shorten/simplify mapChtype by making it table-driven.
	+ shorten/simplify char2DisplayType by making it table-driven.
	+ replace splitString() by CDKsplitString() and CDKcountStrings() to
	  eliminate buffer-limits.
	+ simplify char2Chtype, eliminate fixed-buffer limits.
	+ prevent recursion in segvTrap.

1999/05/29 - T.E.Dickey <dickey@clark.net>
==========================================
	+ remove bindFunction and bindData arrays from individual widgets
	+ make draw, erase, move methods accessed only via the CDKFUNCS table
	  in each widget.
	+ add move method for menu.c
	+ split-out positionCDKObject function from widget code.

1999/05/23 - T.E.Dickey <dickey@clark.net>
==========================================
	+ remove WIN_WIDTH and related macros, use the more common getmaxx,
	  and similar macros.  Provide fallback definitions for those.
	+ replace log10() call in intlen with simple recursion.
	+ add getendx() and getendy() macros.
	+ add moveCursesWindow().
	+ generate include/cdk_config.h, to simplify ifdef'ing for gcc
	  features, and to reduce clutter in the makefiles.
	+ add functions ceilCDK() and floorCDK() to eliminate dependency on
	  the math library
	+ simplified, corrected upper-limit checks in alignxy().
	+ change bindings to be dynamically allocated, part of the CDKOBJS
	  structure.
	+ correct overlap between title and percentage in drawCDKViewerInfo()

1999/05/15 - T.E.Dickey <dickey@clark.net>
==========================================
	+ revised configure script, using autoconf macros which I've written
	  for other programs to check for ncurses configuration.
	+ corrected language of copyrights - Mike Glover's intent to retain
	  copyright of CDK is not served by putting a 1990 copyright attributed
	  to UC Berkeley.
	+ except for unused parameters, fix gcc compiler warnings.
	+ change prototypes to not use parameter names, since this causes
	  namespace pollution.
	+ make functions that do not have public prototypes static.
	+ add missing exit() call in fileview.c, after endCDK() call.
	+ move delwin() calls before endCDK() call in a few other examples.
	+ correct apparent bug in widgets which process a binding (such as
	  KEY_DOWN, in the alphalist and fileview.c demos).  They set the
	  exitType to vESCAPE_HIT rather than the expected vEARLY_EXIT.
	+ ifdef'd out some debug code in scroll_ex.c
	+ correct a loop limit freeing mesg[] array in selection_ex.c
	+ move common object data into new struct CDKOBJS, making cdkscreen.c
	  much simpler and extensible.
	+ change erase and draw functions (called from cdkscreen.c) to
	  object pointers, so only widgets used are linked, making example
	  programs half as big.

4.9.7 -> 4.9.8 (December 1998)
==========================================
	* Changed the way key bindings worked. If the key binding exited
	  with a non-zero value then the widget would exit like the user
	  pressed the escape key. This provides more control over key
	  binding callbacks. Now the bind prototype is:
	     int function (EObjectType cdktype, void *object, void *clientData, chtype key);
	* Reversed the order of this file. The most recent first.

4.9.6 -> 4.9.7 (December 1998)
==========================================
	* Went from static Makefiles to autoconf and configure. (finally)

4.9.2 -> 4.9.6
==========================================
	* Once again, it's a complete mystery.

4.9.1 -> 4.9.2
==========================================
	* Changed the activateCDKViewer funtion to be more compliant
	  with the rest of the activateCDKXXX functions.

4.9.0 -> 4.9.1
==========================================
	* Added the functions setCDKXXXULChar/URChar/LLChar/LRChar,
	  setCDKXXXVerticalChar, setCDKHorizontalChar, and
	  setCDKXXXBoxAttribute to each of the widgets but the menu
	  widget. These functions allow the programmer to define
	  the corner characters of the widget as well as the vertical,
	  horizontal, and attributes of the box.
	* Added the function setCDKXXXBackgroundColor. This sets the
	  background color of the widget's window.
	* Added makefile for the SGI
	* Created the buttonbox widget.
	* Added in Ctrl-N and Ctrl-P to switch between buttons on the
	  dialog box and viewer.
	* Added the functions setCDKRadioItems and setCDKSelectionItems.
	* Added the functions setCDKRadioTitle, setCDKSelectionTitle,
	  setCDKScrollTitle.

4.8.3 -> 4.9.0
==========================================
	* Added a parameter to the setCDKViewer function to turn on/off the
	  line X of Y in the top left corner.
	* Removed the eraseCDKXXX in each of the drawCDKXXX functions. This
	  results in a quicker refresh and less overhead when using the
	  widgets. This should make things A LOT faster. (I suppose it's about
	  time I had complete faith in curses optimized screen refreshing. :) )
	  The side effect is that you might have to change some programs to
	  force an eraseCDKXXX/drawCDKXXX when you think the screen is garbled.
	* Added a little bit of logic in char2Chtype when a terminal cannot
	  display color, bold will be used instead.
	* Cleaned up the way filename completion works in the file selector.
	  You may now type in a path and hit tab and that directory tree
	  will be loaded.
	* Added the ability to use the ~ character to refer to a users home
	  directory, in the file selector. (like csh variants)
	* Changed the setCDKXXX functions. Made many different setCDKXXX
	  functions, one for each item being set. This reduces the overhead
	  of all the setCDKXXX functions.
	* Drastically changed cdk.h. Split the widget definitions and
	  functions into their own header files. This makes it easier
	  to expand CDK.
	* Added the ability to have multiple line titles on most of the widgets.
	* Added the functions setCDKSelectionChoice/getCDKSelectionChoice to
	  set/get a single choice value from a selection list.
	* Added the functions setCDKSelectionModes/getCDKSelectionModes to
	  set/get the ability to set some items in the selection list as
	  editable/uneditable.
	* Added makefile for the DEC Alpha (I forget who sent me this, if
	  you want recognition, mail me again)
	* Created a 'visual install' using some of the widgets. Try it.
	  (type in make vinstall once the library has been made)
	* Added the ability to set the width of the widget respective to the
	  screen size. If you pass in a negative value, the widget will
	  adjust to the width of the window the widget sits in minus the
	  given value. If zero is given, then the widget will be the full
	  width of the window. This removes the need to know how wide the
	  window is when the widget is created.
	* Changed the demos and examples makefiles. I was making things too
	  difficult. It's simpler and easier to compile these directories.
	* Re-Purified the code. (no leaks, no UMR's, no problem... :) )
	* Quantified the code a bit for those who complained about the
	  performance. It has been sped up; I just hope it's enough for
	  some of you speed freaks. :)
	* Added the functions get/setCDKTemplateMin. This allows you to
	  set the minimum number of characters to type in before the
	  widget will accept the typed in value.
	* Changed the documentation to reflect all the changes.

4.8.1 -> 4.8.2 -> 4.8.3
==========================================
	* It's a complete mystery.

4.8.0 -> 4.8.1
==========================================
	* Changed the bind prototype function from
	  void function (EObjectType cdktype, void *object, void *clientData);
	  to
	  void function (EObjectType cdktype, void *object, void *clientData, chtype key);
	* Added scroll bars to the scrolling list, the selection list, and
	  the radio list.
	* Modified the template widget so the new character takes on the
	  color/attributes of the plate widget.
	* Added the function classes moveCDKXXX and positionCDKXXX.
	* Changed the structure of the makefile and created a single makefile
	  for each platform to compile on.
	* Added support for the delete character KEY_DC.

4.7.0 -> 4.8.0
==========================================
	* Fixed bugs documented by Miguel Marques (miguel@apex.cos.yorku.ca)
	  in the entry and mentry widgets. The bug displays itself when you
	  use vHINT or vINT display types. The vHINT actually showed the
	  numbers being typed in (which goes against the hidden element of
	  this display type) and in certain cases vINT allowed non-alpha
	  characters to be entered.
	* Added compile support for Free BSD.
	* Cleaned up the behavior of the entry field.
	* Cleaned up the behavior of the scrolling list.
	* Cleaned up the behavior of the radio list.
	* Cleaned up the behavior of the selection list.
	* Changed (improved) the behavior of the file selector widget.
	* Made the activateCDKFselect behave like the other widgets.
	* Added injectCDKFselect function.
	* Added the calendar widget.
	* Added the slider widget.
	* Added the alphalist widget on the request of Luigi Rizzo.
	  (luigi@ien.unipi.it)
	* Fixed a bug with addCDKScrollItem.
	* Fixed segmentation fault in the rolodex demo.
	* Changed the macros MAX, MIN, and DIFF to MAXIMUM, MINIMUM,
	  and DIFFERENCE respectively to avoid conflicts.
	* Fixed errors with the alphalist and fselect widgets.
	* Added the link format comand for the file viewer. This allows
	  users to 'hyper-link' text files.
	* Removed the use of CTRL-N.
	* Added the ability to load/save with the scrolling window.
	* Added filename completion to the file selector.
	* Cleaned up massive changes and errors in the documentation.
	* Added 'emacs-like' field editing capabilities to the entry
	  and mentry widgets.

4.6.1 -> 4.7.0
==========================================
	* Added injectCDKXXX class of functions. This allows you to inject a
	  single character into the widget.
	* Changed the activateCDKXXX to take an array of chtype to send in a
	  set of predefined characters. This is very useful for performing
	  automated tests of your programs.
	* Added functions setCDKXXXPreProcess and setCDKXXXPosProcess to
	  perform actions before and after a character has been hit.
	* Made the use of CTRL-N consistent.
	* Fixed manual page errors.
	* Added the ability to cut text from the entry, mentry, and template
	  widgets. (uses a global buffer)
	* Added the ability to copy text from the entry, mentry, and template
	  widgets. (uses a global buffer)
	* Added the ability to paste text into the entry, mentry, and template
	  widgets. (uses a global buffer)
	* Added the use of the escape key to exit a widget early.
	* Added the functions addCDKScroll/deleteCDKScroll to insert and
	  delete items in an active scrolling list.
	* Added a parameter to the menu to specify where the menu windows
	  were to be drawn. (top or bottom)
	* Added execCDKSwindow to the swindow function list. This allows the
	  user to 'spawn' a command and direct the output to the scrolling
	  window.

4.6.0 -> 4.6.1
==========================================
	* Removed the callback function parameter from the entry, mentry,
	  matrix, and template widgets. Added in a function setCDKXXXCB.
	  The XXX is the name of the widget.
	* Changed the viewer widget functions around. Moved activateCDKViewer
	  to setCDKViewer. Moved manageCDKViewer to activateCDKViewer and
	  removed the old setCDKViewer.
	* Added in special drawing characters.
	* Added in indent format to indent lines.

4.6.0 (January 1996)
==========================================
	* First pulic release of Cdk.

If you want to get a hold of me mail me at one of the following:
        glover@credit.erin.utoronto.ca
	mike@vexus.ca

The CDK Web page has several homes. They are:
        http://www.vexus.ca/CDK.html (official)
        http://www.datasoft.on.ca/~cdk (Sponsered by the nice folks at Datasoft)

ttfn,
        Mike

PS: There is also a Perl5 extension of this library for you Perl5 fans.
    Look under any CPAN site under the directory CPAN/authors/id/GLOVER.
