Xbae Library version 4.5
------------------------

See the INSTALL file for installation procedure.

Once again, comments, questions, bugs & postcards can be directed to
Andrew Lister (lister@bain.oz.au).  If you want to send me a postcard,
email me for the address!

For those of you not already on the mailing list and would like to subscribe,
send mail to

        xbae-request@bain.oz.au

with "subscribe" in the Subject: field.

If you would like to be a part of the beta testing, send mail to

	xbae-beta-request@bain.oz.au

with "subscribe" in the Subject: field.


What the widgets do:
--------------------

 XbaeMatrix:

   XbaeMatrix is a Motif widget which presents an editable array of
   string data to the user in a scrollable table similar to a
   spreadsheet. The rows and columns of the Matrix may optionally be
   labeled. Also, a number of "fixed" rows or columns may be
   specified - these behave similarly to the labels. While XbaeMatrix
   looks and acts like a grid oF XmTextField widgets, it actually
   contains only one XmTextField.  This means that XbaeMatrix widgets
   with hundreds or thousands of rows have much less overhead than they
   would if they used an XmTextField for each cell. XbaeMatrix has
   callbacks for doing field validation and customizing traversal. It
   allows cells to be assigned independent colors.  It allows rows,
   columns and regions of cells to be selected or highlighted.  The matrix
   can be dynamically grown or shrunk by adding and deleting rows and
   columns at any position.  The widget has many resources to allow
   individual customisation and can be made to look and behave like an
   extended list widget with added functionality.  Pixmaps (both colour xpm
   and standard bitmaps) can be displayed in individual cells with the
   callbacks available in the widget.
   

 XbaeCaption:

   XbaeCaption is a simple Motif manager widget used to associate an
   XmLabel (caption) with it's single child. The label may be either an
   XmString or Pixmap and can be displayed in any one of twelve positions
   around the perimeter of the child. XbaeCaption's geometry management
   technique is to simply "shrink wrap" it's child and display the
   caption alongside it.  By using XbaeCaption with an XmFrame child,
   groups of related widgets can be labeled similarly to the IBM CUA
   "Group Box", but with more flexibility.  XbaeCaption is also useful
   for associating labels with individual XmTextField widgets.


Changes in 4.5
--------------

* Added "<" and ">" symbols to signify when data in a cell is out of
  sight.  This was causing a few problems when a minus sign was hidden
  or other numbers were obscured.  The new feature can also be used
  to indicate that a column should be resized in order to see all the
  data contained in a cell.

* Removed references to XmDrawHighlight() if the Motif version is less
  than 1.2.  This will hopefully allow the widgets to compile under
  Motif 1.1, but with a little less functionality.  There is probably
  more work to be done to actually get it to compile under 1.1 but,
  as I cannot test it, I need a patch from somebody with access to it.

* Updated the Imakefile and Xbae.tmpl files to allow shared and debug
  libraries to be made and installed as well as the normal libXbae.a.
  If your system does not support shared libraries or they don't compile
  properly like Linux/a.out, then only set DoNormalLib to YES.  I don't
  want to hear complaints about shared libraries not working!  Thanks
  to Dirk Vangestel (gesteld@sebb.bel.alcatel.be) for the initial idea
  and patch.

* Broke Utils.[ch] into smaller parts to add Create.[ch] to the
  distribution.  This new module basically handles the creation of the
  matrix widget's data and freeing of the same data.  Also moved a few
  functions that were incorrectly located in Actions.c, namely
  xbaeXYToRowColumn() and xbaeRowColToXY().

* Modified xbaeXYToRowColumn() to correctly detect and report an event
  occurring on a row or column label.

* Tidied up the MatrixP.h file which was getting a little dishevelled.

* Changed the way the matrix handles the cell_backgrounds initialisation.
  Instead of setting all the backgrounds to the core's background, the
  colours are now inherited from the odd and even row backgrounds.  If
  these values have not been set, they inherit the core's colour anyway.

* Altered the background cell colour calculation to provide even and
  odd row backgrounds for fixed rows.  Previously, the calculation would
  only use the odd and even row backgrounds for non fixed rows and
  trailing fixed rows which seemed a little inconsistent.
  
* Fixed a serious bug that no one has reported that involves resizing
  a widget that has trailing fixed rows.  The widget attempted to set
  the height of the vertical scroll bar to zero causing one of those
  XError messages that are nice and hard to track down.

* Changed the way the row label width is calculated.  It now uses the
  average width of the characters.  Normally, it should be calculated
  correctly but if some characters are clipped, you might need to
  change the rowLabelWidth resource.  Generally speaking, the row
  labels look better placed.  This change will only affect proportional
  fonts used as the label font.

* Added a patch from Martin Helmling (mh@c3i.sel.de) to allow the cells
  resource to be row terminated with a single \n rather than the
  original \\n.  I then did the same for the colors and cellBackgrounds.
  Old resources will still work, however.

* Removed the "leading_fixed_rows" and "leading_fixed_columns" members
  of the XbaeMatrixTraverseCellCallbackStruct as they were not referenced
  nor documented.  I really hope this doesn't cause anyone any grief.

* Added the resources XmNbuttonLabels and XmNlabelActivateCallback to
  draw the labels as a drawn PushButton when set to True.  When a label
  is clicked on and released, callbacks on the labelActivateCallback
  will be called.  Also modified the choice demo to allow the buttons
  to be shown.  The background colour of the buttons can be changed
  with the XmNbuttonLabelBackground.

* Made the XmNmodifyVerifyCallback *not* be called when the text field
  is mapped onto a cell.  This is not the default behaviour of the
  text field and produced misleading results.  Pointed out by N. J. 
  O'Neill (njoneil@sandia.gov)

