;;; -*- Mode: changes -*-
;;;__________________________________________________________________________
;;;
;;;                       System: XIT
;;;
;;; Copyright (c): Forschungsgruppe DRUID, Juergen Herczeg
;;;                                        
;;;                Universitaet Stuttgart
;;;
;;;__________________________________________________________________________

This file contains all XIT system changes, which are either bug fixes
or new features.

Whenever a new image is created (either for allegro or lucid) this may
be noted down here.  Aditionally, version numbers may be recorded in
this file.


=============================================================================
   DATE   |    AUTHOR    |                 COMMENT
=============================================================================

11/27/1990 (Juergen)       Instead of perform-callback new method
                           send-callback is used which does not "eval" the
                           a lambda from the actions and funcalls it.  Thus,
                           the local bindings for *contact*, *part*, and
                           *part-value* can be used within the acions, which
                           so far has been implemented using global variable
                           bindings.  Assure that the first element of each
                           actions is always a function name!  Thus
                           *part-value* is no valid action, whereas (funcall
                           *part-value*) or (eval *part-value*) are.  Actions
                           like (eval ...) make global bindings accessible.

11/27/1990 (Juergen)       Old callbacks are now removed when the reactivity
                           for an event type changes.  This has been a bug.

11/27/1990 (Juergen)       There are two new types of (XIT-)Events
                           which should be used to assure that the state
                           of the interaction object and the state of the
                           application are consistent:
 
                           :write-event specifies the characteristic
                                        action(s) of the interaction object
                                        for the application, i.e.
                                        how the application should change when
                                        the interaction objectchanges 

                           :read-event specifie show the appearance of the
                                       interaction object depends on the
                                       application, i.e. how the interaction
                                       object should change when the
                                       application changes 

                           The corresponding actions are performed by
                           the methods write-to-application or
                           read-from-application.  The new slot
                           read-back? of class interaction-window
                           specifies whether a read-from-application
                           automatically follows each
                           write-to-application.  write- and
                           read-events should be used for interaction
                           objects which represent an internal state,
                           e.g. single- or multiple-choice-menus,
                           switches, forms, property sheets etc.,
                           usually in combination with part-events.
                           The state of of an interaction object can
                           be requested via the method identification,
                           it can be set by the corresponding
                           setf-method.

11/27/1990 (Juergen)       There are new types of predefined action
                           descriptions of the form (call <keyword>
                           ...args...) with the following keywords:
 
                            :write performs a write-to-application 
                            :read  performs a read-from-application 
                            :part-event sends a part-event specified by the
                                        args
                            :pass-part-event passes a part event upwards
                                             in the part-of hierarchy
                            :process-part-event initiated by a :part-event 
                                                performs a write-to-application
                                                for the corresponding part 
                            :popup-part performs a select-from-popup-part 
                            :move performs a move-window 
                            :totop performs a totop-window

12/04/1990 (Juergen)       change-reactivity has been changed to add
                           new events to the end of the reactivity list.
                           This fixes problems with obligatory order of
                           button events (single-button events have to be
                           specified before double-button events).

01/25/1991 (Juergen)       Each window has a new slot layouted?, which
                           specifies, whether a window should be layouted
                           by its parent window. Default is nil.
                           Layouted? is initialized with t if no x or y
                           coordinate is specified (cf. function make-window).
  
                           A new method layouted-p tests, whether a window
                           is layouted? and managed-p

                           Method layouted-parts has been changed to return
                           all children of a window, which are layouted-p.

                           New functions next-layouted-sibling, 
                           previous-layouted-sibling, first-layouted-sibling,
                           last-layouted-sibling, 
                           next-layouted-sibling-rotated, 
                           previous-layouted-sibling-rotated should be used
                           instead of CLUE functions next-sibling and 
                           previous-sibling.

01/25/1991 (Juergen)       Class icon specifies basic-layouter as default

_____________________________________________________________________________

01/28/1991 (Juergen)       New image for ALLEGRO
_____________________________________________________________________________

01/28/1991 (Hubertus)      Redesigned Margined-Windows:

                           changed contact-class MARGINED-WINDOW:
                            - removed popup-part-connection
                            - removed default reactivity 
                            - changed superclass to INTEL
                            - renamed generic function DISPLAY-WINDOW to 
                              CLIENT-WINDOW (and corresponding :init-arg)
                             
                          redesigned contact-class MARGIN-LABEL:
                            - removed reactivity and popup-part-connection
                            - MARGIN-LABEL now is a subclass of text-dispel, i.e.
                              use TEXT and FONT instead of MARGIN-LABEL-STRING and
                              MARGIN-LABEL-FONT accessors 
                              (and initarg :text instead of :string).
   
                          The pattern in contact-class SCROLL-LIFT now is of type
                          (or (member :solid) image). In both cases the lift is
                          drawn by using contact's foreground color.
   
                          Note that for "black-on-white" margin-labels you have to 
                          specify both background and foreground attributes
                          (i.e. :background 0, :foreground 1).
                          
                          Note that from now on margins can be accessed by
                          their part-name, which defaults to the margin-class-name 
                          symbol in the keyword package.

01/28/1991 (Hubertus)     new feature: any window can be provided with a shadow 
                          border by mixing in SHADOW-BORDERS-MIXIN.
                          NOTE THAT this mixin should be specified
                          *FIRST* in the list of superclasses.

01/28/1991 (Hubertus)     new feature: PANED-WINDOWs. For an introduction and 
                          examples of usage, see file PANED-WINDOW.LISP.

01/28/1991 (Hubertus)     new feature: VIRTUAL WINDOWs and VIRTUAL DISPELs 
                          (contacts without an associated X-Window). Used to
                          create graphical elements with full window interaction
                          functionality, e.g. virtual text dispels, line dispels,
                          arrow dispels, labelled line dispels, labelled arrow
                          dispels. Examples of usage can be found in the 
                          XIT-EXAMPLES demo.

01/29/1991 (Juergen)     The argument toplevel-window for the functions toplevel-loop 
                         and eval-toplevel-loop now defaults to *toplevel*. 

01/29/1991 (Juergen)     Single-button events no longer have to be specified
                         before double-button events.  This is a CLUE problem
                         which has been fixed for XIT.

01/29/1991 (Juergen)     New event-specifications for button clicks with
                         shift key pressed:
                         :shift-left-button, :shift-middle-button, 
                         :shift-right-button

01/30/1991 (Juergen)     Changing the slots sensitive and selected? of a
                         window does not directly trigger the change of the 
                         shaded? and inverse? slots.  Instead a method is
                         called which triggers the change.  This method may
                         be redefined by subclasses.
_____________________________________________________________________________

01/30/1991 (Juergen)     New image for ALLEGRO
_____________________________________________________________________________

01/31/1991 (Juergen)     Before an interaction-window is unmapped the
                         mouse-feedback is turned of.  This has to be
                         done when the mouse-feedback draws into
                         subwindows specifying backing-store.

01/31/1991 (Matthias) added: show-mouse-documentation (string) method
                             with-mouse-documentation
                                (docu-string <body>) macro
                             for displaying explicit mouse docu strings

_____________________________________________________________________________

02/01/1991 (Juergen)     New image for ALLEGRO
_____________________________________________________________________________


02/01/1991 (Juergen) method accept-text for text-dispels has been changed
                     to send the new text as part-value.

_____________________________________________________________________________

02/05/1991 (Juergen) New image for ALLEGRO
_____________________________________________________________________________

02/05/1991 (Juergen) The methods parts, part, part-with-identification, 
                     part-viewing, find-part, and find-parts for
                     basic-dispels have been added for consistency reasons.
                     They all return nil.

02/05/1991 (Juergen) The selected part of a single-choice-menu may be set
                     to nil, which makes no part being selected.

_____________________________________________________________________________

02/06/1991 (Juergen) New image for ALLEGRO
_____________________________________________________________________________

02/07/1991 (Juergen) Property-sheets have been added as a new type of
                     interaction object, which is generalization of
                     forms.  
                     Text-property-sheet is a subclass of property-sheet
                     which should be used instead of form. It slightly 
                     differs from the definition of form:

                     - subpart-distance has been replaced by 
                       part-value-distance

                     - the part-label-width is automatically adjusted to
                       the maximum width of all labels

                     - the default for part-value-width is nil, which
                       means that the size of a text value is adjusted

                     - the manage-list facility is missing, i.e. lists of
                       values are represented by on text-dispel
                       instead of a list of text-dispels.

                     - Within the read- and write-funcions the variables
                       *view-of* and (for the write-function) *value* are
                       bound (instead of view-of and value in the case of
                       forms).

02/07/1991 (Juergen) Class part-slots of class uniform-part-intel changed
                     to part-options (this is what it actually means)

02/07/1991 (Juergen) Init option :reactivity changed to :reactivity-entries
                     since it incrementally specifies reactivity entries.
                     :reactivity is a valid initarg again, which overrides
                     the initform.
                     In most cases, however, :reactivity-entries should be
                     used.

02/07/1991 (Matthias) New method change-window-foreground; it is same as
                     (setf foreground)

_____________________________________________________________________________

02/07/1991 (Juergen) New image for ALLEGRO
_____________________________________________________________________________
_____________________________________________________________________________

02/08/1991 (Juergen) New image for LUCID (XIT Version 4.1.0)
_____________________________________________________________________________

02/12/1991 (Matthias) the global vars *, **, *** are set within
                      eval-toplevel-loop as usually.

02/12/1991 (Matthias) basic-layouter has a new slot 'constraint'. If set
                      to :x or :y the corresponding coordinate will
                      not be changed during layout.

02/13/1991 (Juergen)  Init option :editable? added to text-property-fields.
                      It specifies whether the text value of a
                      (text-)property-sheet entry is editable. (cf. forms).
                      Default is t.

02/13/1991 (Juergen)  Init option :selection for single/multiple-choice-menus
                      now works correctly with value nil, i.e. no(!) menu entry
                      is selected after initialization.  The same may be
                      performed by (setf (selection ...) nil).

                      Note: It is not possible to have a menu entry
                      representing nil, by just setting the view-of of
                      the corresponding part to nil, since view-of = nil
                      means take the first non-nil view-of in the part-of
                      hierarchy.
                      You can work around this by setting the view-of
                      to a non-nil value (:nil, "nil", :none ...) and 
                      transforming this value (e.g. in the :part-event,
                      :read-event, :write-event), or for property-sheet
                      entries by defining an adequate read- and
                      write-transformation.
_____________________________________________________________________________

02/13/1991 (Juergen) New image for ALLEGRO
_____________________________________________________________________________

02/22/1991 (Matthias) Minor bug in convert (t t 'image): value may now
                      be a symbol

02/26/1991 (Juergen)  Property-fields have got a new init option read-initially?
                      which controls whether a read-from-application is performed
                      after initialization.  Default is t.

02/26/1991 (Matthias) editable text dispel now accepts #\Control-u
                      (clear-text)

02/28/1991 (Hubertus) *bitmap-directory* may be either a pathname-string 
                       or a list of pathname strings (search order: left to right).

_____________________________________________________________________________

03/04/1991 (Juergen) New image for ALLEGRO
_____________________________________________________________________________

03/06/1991 (Juergen) function(s) (do-)open-toplevel-display may now specify
                     display-options (cf. CLUE function open-contact-display)

03/12/1991 (Juergen)   change-window-border has been changed to set the 
                       border-color of the window instead of the
                       border-width! 
                       Use new method change-window-border-width instead! 

03/18/1991 (Hubertus) Fonts can now be specified symbolically in the
     form of family-face-size tripels. Font-tables are used to map
     these specifications onto real fonts provided by the current X
     Server. A font table can be defined by the DEFINE-FONT-FAMILIES
     macro. Usually these definitions are contained in files located
     in one of the directories specified by *FONT-TABLE-DIRECTORY*. To
     install a font table, call INSTALL-FONT-TABLE on the approriate
     filename.  The current font mappings may be inspected by calling
     DESCRIBE-FONT-FAMILIES.

     Font specifications are either lists of keyword-value pairs,
     usually containing :family, :face and/or :size entries, or the
     keyword :default used to name a font totally derived from font
     defaults. Families are usually named by keywords, e.g.
     :helvetica, :lucida, etc. Valid faces are :normal, :bold,
     :italic, :bolditalic (to be extended).  Sizes may be specified
     either absolute (number of points) or relative to the current
     font default, i.e. :tiny, :very-small, :small, :large,
     :very-large, :huge.

     Font specifications can be used wherever XLIB font names are
     legal (e.g. setting the font of text-dispels).  The font
     specifications are converted to XLIB fonts by merging them
     against contact-specific and global font defaults and looking up
     an appropriate font in the font table.  Contact-specific defaults
     can be defined by the resource-slot FONT-DEFAULTS, provided by
     the FONT-MIXIN contact-mixin. Global font defaults are specified
     by the global variable *FONT-DEFAULTS*.  

03/18/1991 (Hubertus)
     changed *BITMAP-DIRECTORY* and *FONT-TABLE-DIRECTORY* to search
     the current directory first.

04/22/1991 (Hubertus) 
     introduced clip-masks to be used in gcontexts. Clip-masks are
     initialized by the primary DISPLAY method and added to the calls
     for SHOW-MOUSE-FEEDBACK and AFTER-DISPLAY. These methods have been
     augmented with an optional parameter CLIP-MASK which should be
     used when establising gcontexts. In addition to that,
     clearing contact's area before performing a DISPLAY operation is
     now restricted to the exposure-region provided by the DISPLAY
     method.
    
____________________________________________________________________________

04/22/1991 (Hubertus)  New image for ALLEGRO (XIT Version 4.5.0)
_____________________________________________________________________________
    
____________________________________________________________________________

04/25/1991 (Juergen)   New image for LUCID (XIT Version 4.5.0)
_____________________________________________________________________________

04/25/1991 (Matthias) 
     moved identify-window-with-mouse from utilities/identifier.lisp
     into kernel/toplevel.lisp. 
     Note that window is selected now by button-p r e s s.

04/25/1991 (Matthias) icons.lisp 
     New: action-button, mostly like soft-bar, but knows its size,
     very handy for paned-windows

04/29/1991 (Hubertus)
     the TEXT slot of TEXT-DISPEL is now a resource-slot (initform "")

05/02/1991 (Hubertus)
     for class text-icon: a text-part is always created,
     unless the text-part init option is specified as :none.


05/13/1991 (Juergen)  New functions start-event-loop and 
                      start-eval-event-loop have been added
                      They are called from toplevel-loop and 
                      eval-toplevel-loop, respectively, but may also
                      be used when no or more than one toplevel
                      window exists.

05/13/1991 (Juergen)  The tag quit-toplevel-loop has been changed
                      to quit-event-loop.

05/13/1991 (Juergen)  eval-toplevel-loop is now a function and no longer
                      a method.

05/13/1991 (Juergen)  keyword toplevel-display of function make-toplevel
                      has been changed to display.
                      New keyword shell-class added.

05/15/1991 (Hubertus) an improved version of a
     multiline-distance-layouter called
     ALIGNING-MULTILINE-DISTANCE-LAYOUTER is available. 

05/24/1991 (Hubertus)  changed lambda-list for UPDATE-DISPLAY-DEPENDENCIES:
                       a second EQL parameter ACTION (type (member :open :close))
                       indicates whether the display is opened or closed.

05/27/1991 (Hubertus)
     added support for `busy cursors' and progress indicators.
     The macro WHILE-BUSY can be used to display a `busy cursor' 
     while processing some code. The macro WITH-PROGRESS-INDICATOR
     indicates progress of computation by an hourglass cursor with
     varying shape. Inside its dynamic scope the function PERCENT-DONE
     can be used to update the indicator.

____________________________________________________________________________

05/27/1991 (Hubertus)  New image for ALLEGRO (XIT Version 4.6.0)
_____________________________________________________________________________
    
____________________________________________________________________________

05/28/1991 (Juergen)   New image for LUCID (XIT Version 4.6.0)
_____________________________________________________________________________


06/13/1991 (Hubertus)  added support for automatic installation of font
                       tables when the display is opened. Automatic 
                       installation is controlled by the global variables
                       *skip-automatic-font-table-installation* and 
                       *default-server-font-table-mappings*.

06/13/1991 (Hubertus)  reimplemented internals of font lookup: 
                       font table mappings may be accessed in both 
                       directions by use of the following functions:
                        GET-FONT (family face size) 
                        GET-FONT-FAMILY-FACE-SIZE (font-name-or-object)


06/25/1991 (Juergen) The methods send-parts, setf-parts, broadcast, 
                     broadcast-setf, set-parts-slots, and 
                     broadcast-set-slot now return more meaningful 
                     values.

06/25/1991 (Juergen) New method "identification" for property-sheets, which
                     returns the list of identifications of its entries;
                     (setf identification) sets the identifications of the
                     entries.

06/25/1991 (Juergen) edit-text and accept-text now also update the 
                     mouse-documentation.  Therefore, they should only
                     be called as reactions on text-dispel events.
                     Otherwise, use new make-editable or make-ineditable
                     methods.

07/01/1991 (Juergen) (setf adjust-size?) now triggers adjust-window-size
                     method.

07/01/1991 (Juergen)  the identification of a margined-window is now the 
                      identification of its client-window;
                      a setf-method has been defined accordingly.

07/17/1991 (Hubertus) added default SELECTED-CHOICE-BOX-BITMAP and 
                      DESELECTED-CHOICE-BOX-BITMAP methods for 
                      class labelled-choice-box.

07/18/1991 (Hubertus) class MASKED-BITMAP-DISPEL introduced:
                       a bitmap-dispel whose bitmap is drawn 
                       by using a clipmask. Additionally mouse feedback
                       is performed by XOR-drawing a
                       feedback-border-bitmap or fedback-inverse-bitmap.

07/19/1991 (Hubertus) introduced SINGLE-CHOICE-BOX-MENU, a single choice 
                      menu which by default uses radio buttons for
                      choice boxes

07/01/1991 (Juergen)  A cursor for editing text-dispels has been added.
                      It is displayed whenever the text-dispel is in
                      edit-mode (cf. methods edit-text and make-editable) 
                      and indicates the position where the text is edited,
                      i.e. characters may be inserted or deleted anywhere.
                      The cursor position may be controlled by the 
                      following Emacs-like control keys:
                        c-f     forward cursor
                        c-b     backward cursor
                        c-e     cursor to end
                        c-a     cursor to beginning
                      Additionally, the following commands have been 
                      (re)defined:
                        c-d     delete cursor forward
                        c-y     insert string from cut buffer
                        c-k     deletes all characters from the cursor
                                position to the end of the text
                      The internal method delete-character has been renamed
                      to delete-character-backward.

                      Currently, a cursor is NOT supported by
                      multi-line-text-dispels and virtual-text-dispels.

07/01/1991 (Juergen)  New init-option :edit? has been introduced for
                      text-dispels.  Use edit? t for initializing
                      text-dispels that should be in edit mode after
                      instantiation, instead of adding the :keyboard
                      event to the reactivity.  Otherwise, no cursor
                      will be displayed.

____________________________________________________________________________

07/22/1991 (Juergen)   New image for LUCID (XIT Version 4.7.0)
_____________________________________________________________________________

08/05/1991 (Matthias) sliders.lisp:
                      Fixed Bug:
                      integer-slider: slider-value -> compute-slider-value
                      New:
                      orientation may now be :up, :down, :right or
     :left

09/12/1991 (Matthias) title-window.lisp: Fixed display-title
     (title-window) so that it works on all (especially color)
     stations.

____________________________________________________________________________

09/12/1991 (Matthias)  New image for Allegro (XIT Version 4.7.1)
_____________________________________________________________________________

09/16/1991 (Matthias) general.lisp: New: query-string,
     find-super-window, query-find-most-specific-window,
     define-system.lisp: New keyword :simulate for load- and
     (re)compile(-only)-system
     toplevel.lisp: New identify-window

____________________________________________________________________________

09/16/1991 (Matthias)  New image for Allegro (XIT Version 4.7.2)
_____________________________________________________________________________

10/02/1991 (Hubertus) general.lisp: 
                      New func: CONVERT-TO-FUNCTION may be used to coerce
                      symbols that name functions or lambda-expressions to
                      function objects. 
                      The global variable *compile-lambda-expression*
                      controls whether lambda-expressions given to
                      CONVERT-TO-FUNCTION should be compiled.

10/02/1991 (Hubertus) property-sheet.lisp: 
                      Clarification: read-function and write-function for
                       property fields accept three types of object:
                       - a symbol that names a real function (no macro or 
                         special-form)
                       - a lambda-expression, i.e., a list whose car is the
                         symbol LAMBDA
                       - a function object as returned by the FUNCTION 
                         special form, e.g., #'car or #'(lambda (x) x)

                       Note that the prefered way of specifying read-
                       or write-functions is via symbols or
                       lambda-expressions. That's because
                       lambda-expressions can be compiled optionally
                       (see Note above).  

                       Notice that if you specify a read-function only,
                       this must be a symbol for which a setf function
                       is defined, because the write-function is assumed to be
                       of the form (setf <symbol>).
                       
                       Incompatible change: general lisp-forms are no longer
                       valid as read- or write-functions.
                       For example, instead of

                          :write-function
                             '(change-geometry *view-of* :x *value*)

                       you now have to write

                          :write-function
                             '(lambda (view-of value)
                                 (change-geometry view-of :x value))

                       or simply

                          :write-function 'change-window-x

10/02/1991 (Hubertus) Added macro facility DEFINE-CALL-ACTION for defining 
                      new call types and actions.
                      Optimized callback facility.

10/07/1991 (Hubertus) Added macro facility DEFINE-EVENT-KEY for defining
                      new mappings from XIT event-keys onto CLUE event 
                      specifications.

10/08/1991 (Juergen)  Property-sheets now may have parts of types different
                      from property-field.  This may be useful, for
                      example, to have property-sheets as parts of another
                      property-sheet.

10/08/1991 (Juergen)  New slot adjust-part-label-width? added to class
                      property-sheet, which decides whether the labels
                      of the property-fields are adjusted to the maximum
                      label size.  Default is t - this is what happened
                      so far.

10/08/1991 (Juergen)  New classes property-line-sheet and 
                      text-property-line-sheet, which are property-sheets
                      with parts arranged in one (horizontal) line.
                      They may, for example, be used as parts of regular
                      property-sheets.
____________________________________________________________________________

10/08/1991 (Hubertus)  New image for Allegro (XIT Version 5.0.0)
_____________________________________________________________________________

10/15/1991 (Juergen)  Introduced sounds into XIT.
                      For a demonstration on a SPARCStation(!),
                      load sound-examples.

10/16/1991 (Hubertus)  fixed a bug in verifying font tables for X11/NeWS
                      property-sheets.
____________________________________________________________________________

21/08/1991 (Hubertus)  New image for Allegro (XIT Version 5.0.0)
_____________________________________________________________________________

10/24/1991 (Hubertus)  New method enclosing-region for basic-contacts
                       (specialized for virtual-windows).

10/24/1991 (Hubertus)  New gf SPECIFY-REGION-WITH-MOUSE for interactively 
                       specifying a region by rubberbanding.

10/24/1991 (Hubertus)  New macros: MAXF, MINF

10/24/1991 (Hubertus)  Reimplemented method RESIZE-WINDOW-WITH-MOUSE
                       which now includes the functionality of 
                       NEWSIZE-WINDOW-WITH-MOUSE.

10/25/1991 (Hubertus) Added DRAW-RECTANGLE-INSIDE, that works like 
                      DRAW-RECTANGLE, except that the outline is completely 
                      contained in the region specified by x, y, width, and 
                      height.
                      Removed buggy function FAST-DRAW-RECTANGLE. Use
                      DRAW-RECTANGLE-INSIDE instead. However, note that this 
                      function has different semantics regarding width and 
                      height.

10/28/1991 (Hubertus) New method IN-REGION-P for basic-contacts.

10/28/1991 (Hubertus)  New method CHILDREN-IN-REGION for composites.

10/28/1991 (Hubertus) Use *inversion-pixel* instead of *black-pixel*
                      for inversion drawings using BOOLE-XOR.

10/28/1991 (Matthias) XIT now accepts rational numbers >0 and <1 to specify
                      a background. On color screens this is converted
     into nice gray scale colors, on b/w screens b/w patterns are used.
     The appropriate pieces of code in the kernel, examples and
     utilities have been changed accordingly (e.g. 6%gray --> 0.06)
     and should be changed in user programs, too. 

10/29/1991 (Juergen)  New function find-file, which determines the full
                      path of a file, given the file name, a set of 
                      directories to be searched, and a set of possible 
                      file extensions.

10/29/1991 (Juergen) Width or height of title-windows are no longer
                     adjusted when no width or height initargs are 
                     specified, since they can also be initialized via 
                     resources.  Automatic adjustment of window size now 
                     only takes place when adjust-size? is t or size is 
                     too small to show the full title.
                     Note: title-window is only a mixin class and,
                           anyway, use margined-windows instead!
____________________________________________________________________________

30/10/1991 (Juergen)  New image for Allegro (XIT Version 5.1.0)
_____________________________________________________________________________

10/29/1991 (Juergen)  New function setup-toplevel which asks for the 
                      x server host, opens a display, and makes a toplevel.

____________________________________________________________________________

07/11/1991 (Juergen)  New image for Lucid (XIT Version 5.1)
_____________________________________________________________________________

11/15/1991 (Matthias) New macros add-hook, remove-hook 

     Replaced UPDATE-DISPLAY-DEPENDENCIES facility by two hook
     variables *open-display-hooks* and *close-display-hooks* These
     should only be changed with the macros: add-open-display-hook,
     add-close-display-hook remove-open-display-hook,
     add-close-display-hook

11/18/1991 (Hubertus) 

     update-display-dependencies is obsolete, use the hooks described
     above.

____________________________________________________________________________

19/11/1991 (Juergen)  New image for Lucid (XIT Version 5.1)
_____________________________________________________________________________

11/22/1991 (Juergen)  The function query-x-server-host now provides a
                      default which is the name of the host taken from the
                      DISPLAY environment variable. 

11/22/1991 (Matthias) Introducing new readable pixmap format
                      (clx+.lisp, image.lisp)

11/28/1991 (Hubertus)  Paned Windows: added ADD-CONFIGURATION, 
                       REMOVE-CONFIGURATION and CHANGE-CONFIGURATIONS
                       for dynamically changing the set of configurations.

____________________________________________________________________________

29/11/1991 (Juergen)  New image for Lucid (XIT Version 5.2) based on PCL
_____________________________________________________________________________

____________________________________________________________________________

29/11/1991 (Juergen)  New image for Lucid (XIT Version 5.2) based on CLOS
_____________________________________________________________________________

12/03/1991 (Juergen)  New method (setf reactivity-documentation-for)

12/03/1991 (Juergen)  define-event-key has got a new key argument 
                      :default-mouse-documentation.

12/19/1991 (Juergen) New functions display-variable and host-variable which
                     access the respective environment variables

01/13/1992 (Juergen)   adjust-size? for paned-window and its parts can
                       now be set to t.  If not specified it still
                       defaults to nil.

01/13/1992 (Matthias) Utilities identifier and mouse-documentation may
     now be loaded before opening a display. They will be instantiated
     automatically as soon as the toplevel window has been build.
     Uses new macro: add-open-toplevel-hook

01/13/1992 (Juergen)  delete-to-end (C-d) and clear-text (C-u) for
                      text-dispels now save the deleted text in the
                      cut-buffer.  Method add-string (C-y), which inserts 
                      text from the cut buffer, now also updates the cursor
                      position.

01/27/1992 (Matthias) In text-dispels the cursor may now be positioned
     with the mouse pointer. To enter edit-mode and position cursor
     call edit-text-with-mouse. 


02/23/1992 (Hubertus) added method confirm-terminating-application, which is 
                       called whenever the user tries to ``delete the toplevel
                       window'' (e.g. by selecting "QUIT" from a window manager
                       menu). This method should return T, iff the system or
                       user decides to complete the deletion. 
                       As part of the confirmation, this method should also
                       perform application-dependent operations to save its
                       internal state, if needed.

03/04/1992 (Juergen) new methods part-position and (setf part-position),
                     which should be used instead of change-part-position

03/17/1992 (Juergen) window-pool-manager for reusing windows has been
                     added (cf. file window-pool-manager).;;;

03/18/1992 (Juergen) popup-part now may also be specified by a window class name
                     or a list of window class name and initargs (cf. class
                     window-icon-mixin).

03/18/1992 (Juergen) inside-border has become a resource slot

03/18/1992 (Juergen) New general identifier class window-identifier.
                     Class identifier now subsumes properties of class
                     fancy-identifier, which should no longer be used.
                     Additionally, identifiers now have an identify-mode
                     which is either :cursor (default) or :line 
                     (former behavior).

03/18/1992 (Juergen) New value :if-needed allowed for slot window-icon

03/17/1992 (Juergen) part-class now is initialized to nil if not further
                     specified.  Formerly, it was unbound.

04/07/1992 (Juergen) New class action-mixin which may be used to associate
                     an interaction object with an action and an action
                     docu.  The action is performed when the event
                     specified by method action-event-type occurs, which
                     defaults to :single-left-button. It is used by
                     the class soft-button.

04/07/1992 (Juergen) Class soft-button is now supposed to subsume
                     behavior of soft-bar and action-button.  Its
                     resources have been changed to those of action-button,
                     e.g., the button now defaults to "button-m" the
                     font to size 12.  This creates a slight 
                     incompatibility for soft-button to previous versions.
                     Note that class soft-bar has been removed, class
                     action-button still exists but should be removed
                     in future versions.  Both can be substituted
                     by class soft-button, the one and only button class
                     in the near future.

04/09/1992 (Juergen)  New key argument :test for methods part,
                      part-viewing, and part-with-identification.
                      Appropriate defaults have been provided to let
                      the methods behave as before.
                      Method part additionally has the keyword :key,
                      which defaults to #'contact-name.  So part with
                      no :key specified works as before.
                      Now, the following is possible:
                       (part <text-menu> "refresh" 
                             :key #'text :test #'string=)

04/09/1992 (Juergen)  New method part* which may be supplied with an
                      arbitrary number of part names.  The method
                      recursively descends the part hierarchy according
                      to the specified part names and returns the 
                      identified part.

04/09/1992 (Juergen)  New optional argument for method part-of which has
                      to be a non-negative integer.  It specifies how many
                      steps to move up in the part-of hierarchy.  Default
                      is 1.

04/09/1992 (Hubertus) Added client event synchronization feature. New
     functions await-synchronize-event, send-synchronize-event and
     macro with-synchronous-mode.

04/09/1992 (Juergen)   New function make-gio which can/should be used 
                       for creating arbitrary kinds of interaction objects
                       For window classes make-window is called, otherwise
                       make-instance is used.  Therefore make-gio also
                       works for non-window objects, e.g. layouters,
                       sound-dispels, etc.
                       make-gio may also be used to create input-output
                       or input-only windows with create-window.  For this,
                       input-output-window or input-only-window have to
                       be specified as the class name.

04/09/1992 (Juergen)   Added "containers" which are intels having just
                       one part, their client-window (cf. margined-windows).
                       Specific container classes "mix in" behavior of
                       popup-windows, popup-part-connection, window-icon-mixin,
                       or shadow-border-mixin.

04/15/1992 (Juergen) The action specified for objects of type action-mixin
                     may now be either a single action or a list of
                     actions (which has already been the case for
                     actions specified for menu entries).

04/16/1992 (Juergen)  New action (call :synchronize-event <value>), which
                      calls send-synchronize-event.

05/22/1992 (Juergen)  New logical event keys :select, :move, :menu
                      with default actions totop-window, move-window,
                      select-from-popup-part.  They should be used 
                      instead of physical event keys.
                           anyway, use margined-windows instead!
____________________________________________________________________________

05/22/1992 (Juergen)  New image for Allegro (XIT Version 5.5.0)

05/22/1992 (Juergen)  New image for Lucid (XIT Version 5.5.0)
_____________________________________________________________________________


06/11/1992 (Hubertus) Introduced new package COMMON-LISP-UTILITIES
     (nickname UT) which holds general multi-purpose
     (non-xit-specific) macros and function definitions.
     Also introduced corresponding system definition  (system :ut).
     Moved some definitions from XIT kernel files  (macros, general)
     to system :ut.

_____________________________________________________________________________

06/11/1992 (Hubertus) New image for Allegro 4.1 (XIT Version 5.5.0)
_____________________________________________________________________________

06/12/1992 (Hubertus) New logical event key :edit with default action edit-text.

06/16/1992 (Hubertus) Added support for synchronization with the X server.

07/16/1992 (Juergen)  display-width and display-height for (basic-)dispels
                      now default to 1 instead of nil.  Thus, text-dispels
                      with no text and bitmap-dispels with no bitmap can
                      now be used properly, ie. their geometry will be
                      valid and they may be displayed.

07/16/1992 (Juergen)  New logical event key :accept-event has been
                      introduced for text-dispels, which is now sent
                      by accept-text (triggered by pressing <Return>)
                      instead of a part-event.  By default, :accept-text
                      sends a part-event, so that there should be no
                      incompatibilities.  :accept-event should be
                      used instead of writing a new accept-text method.

07/16/1992 (Juergen)  (call :self ...) and *self* should be used instead
                      (call :contact ...) and *contact* respectively.
                      The old notation is kept for backward compatibility
                      reasons, but may be removed in future releases.

07/16/1992 (Juergen)  A set of dialog windows (class dialog-window)
                      has been added for modal interaction, e.g.,
                      notification, confirmation, prompting, and menu
                      selection (cf. kernel file dialog-windows).
                      The corresponding dialog windows may be invoked
                      by the following functions:
                      notify, confirm, prompt, single-select, multiple-select

07/21/1992 (Juergen) Added methods actions and (setf actions) for class
                     action-mixin

07/21/1992 (Juergen) New class timer-mixin which provides a convenient
                     interface for CLUE timers to implement animations.
                     timer-mixin is used in interaction-window.

07/22/1992 (Juergen)  For class view-mixin, the view-of slot of an object
                      referenced by means of the view slot is now updated,
                      ie. it always points to the corresponding application
                      object.  To this end, the methods view-of and
                      (setf view-of) for non-interaction-windows have been
                      defined ; they just do nothing.

07/23/1992 (Matthias) New: transformers They comprise everything what
     is needed for transformations between application values and
     interface values, e.g., what has been read- and
     write-transformation in property-fields. Thus transformation can
     be exploited easily for every widget. Particularly useful for
     gauges (e.g. linear, logarithmical scales).  Every
     interaction-window will get a new slot transformer from the new
     class transformer-mixin. The slot is initialized (and set) in a
     syntax like that used for layouters. Additionaly, when a list of
     classes is given, a new transformer class is automatically
     created and optionally cached for further shared usage.

07/23/1992 (Matthias) New generic value (was identification) depicts
     the transformed interface value. The untransformed interface
     value is now referenced by identification.  Identifcation should
     be defined for every interaction-window, e.g., as view-of,
     selection etc.

     value    -----  read-transformation  ---->   identification
              <---- write-transformation  -----
  
07/24/1992 (Juergen)  interaction-window now mixes in class application-mixin
                      which in addition to class view also provides
                      an interface for connecting interaction and
                      application objects via read and write functions and
                      transformations, formerly only provided by
                      property-sheet entries.  For more details see
                      comments in file application-connection.

                      In general, this is an extension to the previous
                      interface.  However, there is a slight incompatibility
                      to previous releases.  Instead of calling
                      identification and (setf identification) to access
                      the characteristic value of an interaction object, 
                      the new functions value or (setf value) are to be used, 
                      which apply a transformation to the identification.
                      This is obligatory for property-sheet-entries, where
                      the transformation formerly was included in the 
                      identification.  This makes the whole thing cleaner.

07/24/1992 (Juergen) In popup-part-connection the value :self should be
                     used instead of :contact for the slot
                     popup-part-connection.  :contact may be no legal value
                     in future releases.

07/24/1992 (Juergen) Copy utilities moved into the kernel.  Try new
                     generic function copy or copy-and-move-window -
                     it's fun.

07/28/1992 (Matthias) Renamed contact-adjusted-width (-height) to
     adjusted-total-width (-height) because it includes the borders

07/28/1992 (Matthias) new slot whitespace-separators for
     multi-line-text-dispel. Display-position now makes something
     useful

07/29/1992 (Juergen) Function find-file has been extended to also accept
                     full pathnames as the first argument, which may
                     include directory, filename, and extension.
                     The second and third argument (directories and 
                     extensions) are now optional.  Extensions default
                     to the list of the binary file type, e.g. "fasl",
                     and the "lisp" file type, e.g. "lisp", in this
                     order.

07/30/1992 (Juergen)  New function get-view-of and (setf get-view-of) to
                      access the view-of SLOT of a view.
                      Note that the function view-of retrieves the first
                      non-nil value in the interaction-object hierarchy
                      instead of the slot value.  view-of and 
                      (setf view-of) still are the preferred interface!

07/30/1992 (Hubertus)  Incompatible change to paned-windows:  
                       The value for the adjust-size? attribute for paned-windows 
                       and panes now comes from the default supplied in the window's 
                       class definition (usually T) unless overridden
                       explicitely in the :parts description.
                       This means that panes whose size is determined by the 
                       paned-window's constraint specification should have 
                       :adjust-size? nil in their part description.
                       Additionally, paned-windows with a fized size should
                       explicitely set their adjust-size? attribute to NIL.

08/04/1992 (Matthias) load-system now is a NOP if the system is
     already loaded. To force loading use new function reload-system

08/04/1992 (Juergen)  Copy functionality has been improved to also handle
                      circularities, e.g. windows with drop shadows may
                      now be copied properly.

09/29/92 (Hubertus)    Incompatible change to pane-layouters: 
                       The generic function CONFIGURATIONS now returns a 
                       list of configurations as specified by the 
                       :configurations initarg or by (SETF CONFIGURATIONS).

09/29/1992 (Juergen) Resource default for cursor of soft-button
changed to "hand2".

10/02/1992 (Juergen)  The :edit? keyword for text-dispels may now be
                      supplied with the following values:

                        nil       not editable
                        :local    editable, only dispel has keyboard focus,
                                  i.e. mouse pointer must be within dispel
                                  for editing
                        :context  editable, keyboard focus is passed
                                  upwards in the window hierarchy
                        t         same as :local, for backward 
                                  compatibility

10/08/1992 (Juergen)  #\Return and #\Linefeed have been switched for
                      multi-line-text-dispel, i.e. #\Linefeed creates
                      an new line character and #\Return accepts the 
                      text.  This is more consistent with single-line
                      text-dispels.


12/08/1992 (Hubertus) added function SYSTEM-PATHNAME which computes
                      the absolute pathname of a path specified relative 
                      to a given system.

12/14/1992 (Juergen) When hide-on-part-event? is set to t for a
                     popup-window, a :part-event reactivity-entry is 
                     automatically created.

12/14/1992 (Juergen)  action-mixin has been added to the superclasses of
                      basic-menu, i.e. :action is a valid keyword for
                      menus, specifying the :part-event reactivity entry.

12/14/1992 (Juergen)  New function select-from, which lets the user
                      interactively select a value from a popup menu, similar
                      to invoking single-select or multiple-select.  However,
                      with select-from, no dialog-box is created.

12/15/1992 (Juergen)  identify-window has been extended to provide a menu 
                      containing the windows in the selected object's
                      window hierarchy when the right mouse button
                      is used for selection.