Log file of changes to !ResEd

05-Apr-94  Take over version 0.01 from Steve Hunt.

06-Apr-94  Makefiles
            All Makefiles and MakeProtos simplified.

           common.c.wimp:
            Remove reference to macro NOBACKLINKS.

           shell.c.main:
            Remove reference to macro TESTTESTTEST.

07-Apr-94  common.c.version, common.h.version:
            New files containing code to construct a version string which
             includes the date when this source was last compiled.

           common.h.resed:
            VERSION_NUMBER #define, and #include "version.h" added.

           shell.MakeProto:
            Now recompiles common.c.version whenever a new shell !RunImage is
             to be made, and then explicitly links it in.

           !Menu.MakeProto:
            Now recompiles common.c.version whenever a new !Menu !RunImage is
             to be made, and then explicitly links it in.

           Templates:
            Version icon in Info box given a name.

           shell.c.main:
            load_prototypes() now stores the version string in the Info box.

********   SrcFiler version 002 made from version 0.02 (07-Apr-94)   ********

12-Apr-94  CSE.!Menu.!Boot deleted.

15-Apr-94  CSE.!Menu.doc.notes and .strategy combined to a single file called
            .implnotes.

           shell.doc.notes and .strategy combined to single file .implnotes.

           shell.doc.IanQuestio deleted.

           doc.bugs deleted (after redistributing bugs to other files!).

           doc.notes deleted.

           Systematic changes made to the source files for !Menu to make the
            structure definitions for menu templates (both inside a resource
            file and in memory) a straightforward mapping from the typedefs
            and #defines in the ToolBox source.

           New header file CSE.!Menu.h.resformat introduced which holds just
            those definitions related to the structure of menu templates as
            held in a resource file.

18-Apr-94  Systematic changes made to all source files to make the structure
            definitions for object templates and resource files a simple
            mapping from the typedefs and #defines in the Toolbox source.

           The "wordtoreloctae" field inside a relocation record is now
            declared as int rather than int*. Changes have been made to
            CSE.!Menu.c.menuedit, CSE.!Menu.c.relocate, shell.c.genmsgs and
            common.h.resformat to reflect this.

19-Apr-94  * Changes made to accept/create menu objects in new resource file
             format which no longer includes an options field. At the same
             time, a bug was fixed: absent string/message/relocation tables
             are now correctly represented by -1, rather than 0:

             common.h.resed:  VERSION_NUMBER updated to 0.03

             !menu.h.main:  MENU_OBJECT_VERSION updated to 101

             shell.h.shell:  DEFAULT_VERSION updated to 101

             common.h.resformat:  options field removed from typedef for
              ObjectTemplateHeaderRec.

             !menu.c.menuedit:
              Comments about options field removed from comments preceding
               menuedit_object_size(..) and
               menuedit_save_object_to_memory(..)
              menuedit_save_object_to_memory(..):
               string/message table offsets are set to -1 if absent, instead
                of being zeroed.
               Options field initialisation is removed.

             !Palette and Palette:
              Initially replaced by "hand-built" resource file, and then
               edited using new !ResEd to desired form.

           * Checks for corrupt menu template structure added:

             !menu.c.relocate:
              relocate_object(..) now returns NULL if the internal structure
               of the object is not as expected. At present, the only check
               is that the relocation table contains only string and/or
               message relocations.

             !menu.c.menuedit:
              menuedit_load(..) checks the value returned by
               relocate_object(.) and returns error "CorruptMenu" if NULL.

             Messages: includes new message "CorruptMenu".

           * Code added to process version 100 objects correctly:

             !menu.c.protocol:
              received_resed_object_load(..) now accepts version 100 objects,
               removing the options field and updating affected pointers
               before passing them to menuedit_load(..).

             shell.c.document:
              document_load(..) now accepts version 100 documents as well as
               version 101; no pre-processing is necessary.

           * Redundant messages removed from Messages files.

********   SrcFiler version 003 made from version 0.03 (19-Apr-94)   ********

20-Apr-94  Create !Window structure inside CSE, and update main Makefile,
            ready to go.

22-Apr-94  Header files describing the format of window object templates (as
            inside a resource file) and of window objects themselves (as
            being edited by !Window) completed.

25-Apr-94  Two protocol buglets fixed in !Menu.c.protocol:

            received_resed_object_loaded(..):
             menu->modified = FALSE only if no error is reported; previously
              this flag was reset regardless, and so the occurrence of an
              error which was later corrected (eg out of memory) could lead
              to loss of data.
             menu->pendingclose = FALSE always; previously, this was reset
              only if no error was reported. A consequence was that an
              editing window might mysteriously disappear when copying an
              object from one shell window to another following an earlier
              transient error.

            bounced_resed_object_sending(..):
             menu->pendingclose is set FALSE at the same time as freeing any
              object data.

           Shell <-> !Window message protocols working.

26-Apr-94  common.c.debug:
            dprintf(..) now flushes file after each write.
            display(..) added.

           Displays window when window object loaded - although this window
            has no connection with the window object!

           The menus attached to the editing window can be displayed,
            including associated dialogue boxes. Skeleton align, coords
            and grid modules constructed.

28-Apr-94  Design scheme for generic handling of gadget types, and construct
            header files, the generic gadget module, and skeleton action
            button and display field modules. Gadget class registration,
            and generic template loading seems to be working.

29-Apr-94  Current source backed-up to SrcFiler tree (no new version made).

05-May-94  Generic code to load, size and save window templates completed
            and working. Specific code for display field and label gadgets
            written. Main routines coded are:
           windowedit: load, close_window, object_size, save_object_to_memory
           gadget: header_size, header_load, header_save, header_free
           display, label: body_size, body_load, body_save, body_free,
                           template_size
           relocate: make_ref

           Current source backed-up to SrcFiler tree (no new version made).

           !Menu.!Palette file replaced by one which does not have bit 1 of
           the menu flags word set - and whose menu entry has componentID 0.
           I don't know how the original file was created - but Matt's check
           program showed that it was no longer conformant!

06-May-94  Replaced Templates and !Menu.Templates by Matt's revised template
           files.

           Reverted to old template files because of "address exceptions"
           when quitting with the new ones!

09-May-94  common.c.wimp:
            wimp_load_template_returning_size(..):
             Now zaps any sprite area pointers found to +1. This ensures that             problems do not arise when templates whose indirected sprite
             icons include a nonsense sprite area pointer are loaded.
            This cures one of the problems with the new templates from Matt,
             but another one still seems to be lurking!

           An untraceable overwriting bug remains hidden; changes made to try
            to track it down include:

           Makefile for the shell:
            LDFLAGS=-d  - to include debugging tables for DDT.

           common.h.dbmalloc:
            Set DBMALLOC = 1 - so that every call of malloc, calloc, realloc
             and free goes through intensive checking code.

           shell.c.main:
            Call to debug_file(..) added to main(..) so that dprintf(..) stts
             send their output to a logfile inside !ResEd - this is because
             dbmalloc notes problems using dprintf.

           Various files in common and the shell:
            Comment out all dprintf calls except the dbmalloc ones - thus
             making the output less confusing!

           common.c.error:
            error_exit(..) - now calls checkheap(TRUE) to do a thorough check
             of the heap before exiting.

           shell.c.class:
            investigate_cse(..) now calls Wimp_SpriteOp directly instead of
             using system(..) to call *iconsprites; it seems that the
             debugger prefers this.

           common.c.dbox:
            dbox_setstring(..), dbox_getstring(..):
             Both will now display an error message if the icon is not both
             text and indirect.

           common.c.menu:
            menu_entry(..), menu_get_entry(..), menu_alter_entry(..):
             Each of these now checks that the item number specified is in
             range for the menu being operated upon.

           The bug manifests itself as data abort, address exception, frozen
            desktop, data transfer error, etc. - and apparently is a result
            of incorporating Matt's new templates - hence I've retained the
            original ones as Templorig in both !ResEd and !Menu. However, the
            present state is that I am unable to recreate the problem.

12-May-94  At last I believe I know what the problem is - it's a bug in the
            Wimp which results in bizarre (and often fatal) behaviour when
            a mouse click on a slabbed icon causes the application to quit.
            The solution is well-known(!) - load the BorderUtil module.

           However, I shall keep the malloc, dbox_[s/g]etstring and menu
            creation checking that I added during debugging - to be included
            only if DEBUG = 1.

           Also added call to debug_file(..) to main(..) in !Menu.c.main so
            that debug output is automatically produced for !Menu as well.
            Commented out all dprintf(..) statements present in both !Menu
            and !Window files.

           Added "2> <..$Dir>.pm" to the "Run" commands in the !Run files
            for !Menu and !Window - to send any backtrace information to a
            file.

           Created new directory modules containing the single file
            BorderUtil, and amended !Run to RMensure the BorderUtils module.
            The !Run file also ensures that we are running RISC OS 3.10 or
            later.

           The MakeProto files have all been modified to remove the squeeze
            step and the "settype Absolute" command.

           Wimp slot size increased to 128k for each of the CSEs.

           Matt's new templates have been installed again!

           Terminating newlines removed from all !Run files - this solves yet
            another quitting problem, whereby the Quit? box remains on screen
            after the Discard button is clicked until ESC is pressed.

           common.h.resformat:
            WIMP_SPRITEAREA now defined as -1, instead of +1.

           All templates now available added to !Window.Templates.

           common.h.wimp: - added definitions for FilerOpenDir messages.

           All occurences of calls to system(..) have now been replaced by
            direct SWI calls; code affected is as follows:
              common.c.saveas:    settype(..)               - *settype
                                  delete(..)                - *delete
              shell.c.document:   document_close_window(..) - *Filer_OpenDir
              shell.c.main:       iconsprites(..)           - *iconsprites
                                  dataload_message(..)      - *delete

           Value for WIMP_SPRITEAREA changed from +1 to -1 following decision
            from Ian.

           Replaced !Sprites by new files from Matt Hammond - !Sprites and
            !Sprites22 - and also Sprites, and !Menu.!Icons and
            !Window.!Icons similarly.

13-May-94  Checks in dbox_[s/g]etstring(..) relaxed a little, to allow
            setting the sprite name in a SaveAs dbox - now checks only that
            the icon has the indirect bit set.

           shell.c.class:
            investigate_cse(..):
             Code added to load, eg, !Icons22 if it exists and is appropriate
             to the current mode - instead of blindly loading !Icons.

16-May-94  !Window.Templates: field naming rationalised, and WimpIcon
            template removed, since this is being removed from the spec.

           !Run - now loads Toolbox and Window modules from the Toolbox to
            provide access to Window_PlotGadget; this is used to display
            gadgets.

           main.c, windowedit.c: code added to redraw windows properly, by
            calling Window_PlotGadget.

20-May-94  New version made on SrcFiler - this corresponds to the 05-May-94
            state.

           Then current state saved to SrcFilr - but no new version created.

           New source and header files created for !Window: c/h.props,
            c/h.colours, c/h.extent; MakeProto and h.main amended
            accordingly.

           !Window.main.c:
            load_prototypes(..) now calls xxx_load_prototypes;
            mouse_click(..) now calls xxx_mouse_click(..);
            key_pressed(..) now calls xxx_key_pressed(..);
            open_window_request(..) now calls xxx_reopen_dbox(..);
            close_window_request(..) now calls xxx_close_dbox(..);
              for xxx = props, colours and extent.

           common.h.wimp, common.c.menu:
            Definitions for the MenusDeleted message added and used.


           !Window.c.windowedit:
            windowedit_open_palette(..) - should now work
            windowmenu_cb(..):
             Calls props_open_dbox(..) for Properties... hit
             Calls colours_open_dbox(..) for Colours... hit
             Calls extent_open_dbox(..) for Extent... hit
             Calls windowedit_open_palette(..) for Palette... hit
             Calls windowedit_close_wind(..) for Close hit
             Hits in the Edit submenu, and Key shortcuts hits continue to be
              ignored.
            windowedit_mouse_click(..):
             Double-click on background calls props_open_dbox(..).
            windowedit_key_pressed(..):
             As for windowmenu_cb(..).
            windowedit_rename_window(..):
             Calls props_update_dbox(..) to update the window properties
              dialogue box title.

23-May-94  common.c.dbox, common.h.dbox:
            dbox_set_caret_to(..) - new function, abstracted from
             !Menu.c.props.

           !Window.c.windowedit:
            windowedit_load(..):
             Temporary fudge for window title - forces length = 256.
            windowedit_save_object_to_memory(..):
             Sets title buffer length to length of title + 1, and sets the
              title validation string to -1.

           !Window.c.props:
            First attempt to code routines to deal with the Window properties
             dialogue.

31-May-94  props, extent and colours:
            Window properties dbox, extent dbox and colours dbox fully coded.

           common.h.resed:  VERSION_NUMBER updated to 0.04

           Integrate Matt Cloke's changes to implement solid dragging:

            !ResEd.Sprites, !ResEd.Sprites22:
             Added the "package" sprite from RISC OS 3.5.

            common.h.dragdrop:
             New parameters spritename and numselected added to
              dragdrop_start(..).

            common.c.dragdrop:
             dragdrop_start(..):
              Two extra parameters spritename and numselected added.
             do_dragbox(..):
              New code to use DragASprite added.
             All calls to do_dragbox(..) amended to include extra parameters
              sprite_area, sprite_name and flags. Only one of these calls -
              the one from dragdrop_start(..) - actually sets non-NULL values
              for these; all the others set NULL values (because they are not
              yet understood!).

            shell.c.document:
             start_drag(..):
              Two extra parameters passed in call to dragdrop_start(..),
               being the name of the sprite, and the number of objects
               selected.
              Includes test on number of items selected: if greater than one,
               do_dragbox(..) is called with spritename = "package".

********   SrcFiler version 005 made from version 0.04 (31-May-94)   ********

01-Jun-94  Set DEBUG = 0 in common.h.debug, DBMALLOC = 0 in common.h.dbmalloc
            and comment out CFLAGS = -DDEBUG=1 in MakeFile in shell, common,
            !Menu and !Window - and recompile for release.
           Remove 2> <ResEd$Dir>.pm from !ResEd.!Run
           Remove 2> <ResEd$Menu$Dir>.pm from !Menu.!Run
           Remove 2> <ResEd$Window$Dir>.pm from !Window.!Run


********   Version 0.04 (01-Jun-94) released on aquarius.$.latest    ********

           Reset all the above, set version = 0L05, and recompile for
            continued development.

           !Windows.Templates: keyboard shortcut templates adjusted ready for
            implementing the Key shortcuts ... menu option.

           common.h.swicall: #include's for kernel.h and swis.h removed,
            since these are included by resed.h.

02-Jun-94  Every source file now explicitly #include's just those header
            files that it requires. The header files have also been altered
            so that no header file includes any other header file with just
            one exception: common.h.resed #include's the system header files
            and error.h, messages.h, debug.h and dbmalloc.h. common.h.swicall
            now includes all of the SWI #define's - and so there is no need
            to include C: on the #include path; all MakeProto files have been
            adjusted accordingly. Net result is that a full rebuild now takes
            just over 9 minutes instead of almost 15 minutes.

********   SrcFiler version 006 made from version 0L05 (02-Jun-94)   ********

           dragdrop_accept(..) is now declared in common.h.dragdrop, although
            it is client-supplied. Consequent changes made to
            common.c.dragdrop, shell.c.dragdrop and menu.h.drag.

           Start implementation of Keyboard Shortcuts dialogue box; new files
            !Window.c.keycuts and !Window.h.keycuts created, and skeleton
            functions declared and called from main and windowedit; MakeProto
            altered to include this new source module. New fields added to
            WindowObjRec structure for keycuts dbox and pane window handles.

06-Jun-94  The "Keyboard Shortcuts" dialogue box - complete with its pane -
            can now be created and moved around the screen; it also appears
            to cope fine with mode changes and changes to "off-screen"
            controls.

           !Window.c.props:
            apply_dbox(..) - now correctly sets window->windowflags according
             to the presence or absence of a title bar. This makes it
             possible to create windows without title bars.

07-Jun-94  Can now write keyboard shortcuts to the pane, and select/deselect
            them; but it's still a bit "clunky". Code to take/reinstate local
            copy of keyboard shortcuts for editing has been written.

08-Jun-94  No longer "clunky" - I now invalidate just those lines that need
            to be redrawn.

********   SrcFiler version 007 made from version 0L05 (08-Jun-94)   ********

09-Jun-94  Creation, deletion and editing of keyboard shortcuts completed.
            It may not be the "best" UI, but it'll probably do for the time
            being.

10-Jun-94  Code tidied up (better use made of gui_..(..) routines etc.).

           common.h.resed: - version number updated to 0.05.

********   SrcFiler version 008 made from version 0.05 (10-Jun-94)   ********

********   Version 0.05 (10-Jun-94) released on aquarius.$.latest    ********

           common.h.resed: - version number updated to 0L06.

           !Window.Templates: - removed "adjust size" icon from the keycuts
            pane template (KeyPane)!

13-Jun-94  !Window.c.main:
            message(..) now calls focus_message_claim_entity(..) upon receipt
             of such a message - thus being ready for "deemphasised" display
             of selections.

           !Window.c.windowedit:
            focus_cb(..) body brought into use, and
             windowedit_get_selection_bbox(..) implemented.
            windowedit_load(..) now claims input focus only if the loaded
             window is not the palette.

           common.h.filetypes:
            Now uses allocated filetype FAE; !Boot files, !Run files and
             sprite names all changed to conform, and types of Palette files
             adjusted accordingly.

           common.h.newmsgs:
            Message numbers are now properly registered!

           !Window.c.windowedit:
            Implement set_or_clear_selection(..), select_gadget(..) and start
             implementing selection model: CLICK/SEL on background and gadget
             and CLICK/ADJ on gadget.

           common.c.interactor:
            Prefix declarations for eventmask and timeout by static to ensure
             they remain hidden.
            fix_eventmask() - initial value of timeout now 100000, thus
             making it possible for the final value to be greater than zero!

14-Jun-94  !Menu.c.drag, !Menu.c.lassoo:
            Time out for lassooing and dragging tracking now set to 5 instead
             of 2.

           !Menu.c.lassoo:
            select_bounded_entries(..) - no longer checks for selected
             entries outside the lasso - since these will either have been
             cleared when the drag started, or should be untouched.

           !Window.c.windowedit:
            Activate code to define selections by lasso.

           !Window.c.lassoo, !Window.h.lassoo:
            New module added - suitably adjusted copy of !Menu.c.lassoo.
            Lasso selection/adjustment now operational.

15-Jun-94  common.c.dragdrop:
            dragdrop_start(..) now sets timeout = 5 (not 25); this 'error'
             was concealed before because of bug in fix_eventmask(..).

           !Menu.c.main, !Window.c.main:
            message(..) no longer checks for Message_Dragging messages, since
             neither Menu nor Window CSE participates in drag'n'drop.

           !Window.c.windowedit:
            Activate code inside windowedit_mouse_click(..) to drag gadgets
             by calling drag_start(..).

           !Window.c.drag, !Window.h.drag:
            New module added - suitably adjusted copy of !Window.c.drag.
            Currently, dragging (selections of) gadgets works, but dropping
             them has no effect!

           !Window.c.windowedit:
            post_windowmenu(..) - now implements "weak" selections.

           !Window.Templates, !Menu.Templates:
            Matt's latest version installed - these have various minor
             changes to reflect Neil's new gadget specs and the null/empty
             issue.

16-Jun-94  Generic gadget handling extended to include "copy gadget"
            function; changes to gadget, action, display and label were
            required.

           Full drag'n'drop functionality completed for dragging selections
            of gadgets - both within one window, and across windows, and for
            "copy" and "move" semantics. However, invalidation rectangles are
            still not quite correct.

********   SrcFiler version 009 made from version 0L06 (17-Jun-94)   ********

17-Jun-94  New functions (and macro) added to common.c.wimp to ensure that
            coordinates in boxes and points are multiples of 4.

           !Window.c.gadget:
            gadget_header_load(..) now forces gadget extents to be multiples
             of 4.

           !Window.c.drop:
            finalise_drag(..) now forces drag distance to be a multiple of 4.

           !Window.c.windowedit:
            windowedit_load(..) - now forces visarea, scrolloffset and
             workarea coordinates to be multiples of four.
            windowedit_reopen_window(..) - forces visarea, scrolloffset to be
             multiples of 4.

           !Window.c.extent:
            apply_dbox(..) - now forces extent and minimum size coordinates
             to be multiples of 4.
            extent_dbox_mouse_click(..) - now adjusts coordinates in steps
             of 4 when adjuster icons are clicked.

29-Jun-94  !Window.c.windowedit, !Window.c.lassoo, !Window.c.drag:
            Changes made to window redraw code to display "resize ears"
             around selected gadgets when the window has input focus.

30-Jun-94  !Window.c.windowedit:
            windowedit_mouse_click(..), click_in_gadget(..) - now recognise
             a click on a resize ear of a selected gadget.

01-Jul-94  New modules !Window.c.move and !Window.c.resize created to handle
            drags on resize handles - constrained moves and resizing
            respectively. These features now work.

           !Window.c.windowedit:
            The "Delete" menu option and ^X keypress implemented.

           !Window.c.coords:
            Code for the Coordinates dialogue is now complete.

           common.h.resed: - version number updated to 0.06.

********   SrcFiler version 010 made from version 0.06 (01-Jul-94)   ********

********   Version 0.06 (01-Jul-94) released on aquarius.$.release   ********

           common.h.resed: - version number updated to 0L07.

04-Jul-94  Start work on generic gadget definitions and processing.

06-Jul-94  !Window.Templates: removed length field (and corresponding
            adjuster icons) from the Label template, and extended the Text
            writable to fill up the space.

07-Jul-94  New source and header file gadgdefs - contains the static
            structures that define the gadget types. Details of individual
            gadget types removed from h.windowedit.

           Remove action, label and display source and header files.

           h.gadget - now defines the structures for gadget definitions.

           c.main:
            load_prototypes(..) now loads gadget property dboxes directly
             by scanning the gadgetdefs array.
            register_gadgets(..) - and its call - removed.

           c.windowedit:
            windowedit_load(..) now calls gadget_load(..) to load each
             gadget in the window template.
            windowedit_save_object_to_memory(..) now calls gadget_save(..) to
             reassemble each gadget into its window template.
            windowedit_object_size(..) now calls gadget_size(..) to find out
             how much space is needed to store the gadget.
            free_gadget(..) removed; gadget_free(..) is called directly
             instead.

           c.gadget:
            Remove gadget_register(..), gadget_locate(..),
             gadget_enumerate(..) and gadget_header_load(..).
            Add gadget_load(..) to create a gadget record from a template.
            Remove gadget_header_save(..), add gadget_save(..).
            gadget_header_size(..) replaced by gadget_size(..).
            Replace gadget_header_copy(..) by gadget_copy(..).
            Replace gadget_header_free(..) by gadget_free(..).

           c.drag:
            copy_to_tmp(..) now calls gadget_copy(..) to copy a gadget
             record and gadget_free(..) to free one.

           New generic code for loading, copying, freeing and saving gadgets
            seems to work with label gadgets - but not a very thorough test
            so far ...

********   SrcFiler version 011 made from version 0L07 (01-Jul-94)   ********

08-Jul-94  !Windows.Templates - "Deliver value changed event" option icon
            removed from Display field template.

11-Jul-94  !Windows.c.relocate:
            relocate_make_ref(..) - remove 'emptyisnull' parameter, since in
             future the NULL/empty dichotomy will be resolved on loading and
             maintained during editing.

           c.gadget, c.windowedit:
            gadget_save(..), windowedit_save_object_to_memory(..) - calls to
             relocate_make_ref(..) amended accordingly.
            clone_string(..) now has an extra parameter 'emptyisnull' which
             is set TRUE when loading a mandatory string field inside
             gadget_load(..).

12-Jul-94  h.main:
            All gadget property box #defines replaced by the single value
             GadgetDbox.
           c.main:
            key_pressed(..) calls gadget_dbox_key_pressed(..) if a key is
             pressed while a gadget properties dbox has input focus.
            mouse_click(..) calls gadget_dbox_mouse_click(..) if the mouse
             is clicked over a gadget properties dbox.
            open_window_request(..) calls gadget_reopen_dbox(..) if an
             OPEN event is received for a gadget properties dbox.
            close_window_request(..) calls gadget_close_dbox(..) if a CLOSE
             event is received for a gadget properties dbox.
           c.windowedit:
            windowmenu_cb(..) calls gadget_open_dbox(..) if the user chooses
             the Edit=>Properties.. entry.
            windowedit_mouse_click(..) calls gadget_open_dbox(..) if the user
             double-select-clicks on a gadget.
            windowedit_key_pressed(..) calls gadget_open_dbox(..) if the user
             presses ^P.
            windowedit_rename_window(..) calls
             gadget_dbox_update_window_name(..) when a window object's name
             changes, and the gadget's properties dbox is open.
           c.gadget:
            gadget_free(..) calls gadget_close_dbox(..) if the gadget has a
             properties dbox open.
           c.drag:
            disambiguate(..) calls gadget_dbox_update_componentid(..) when
             a new componentID is allocated to a gadget whose properties
             dbox is open.
            finalise_drag(..) calls gadget_dbox_update_window_name(..) for
             each gadget that is moved from one window to another and whose
             properties dbox is open.
           c.gadget, h.gadget:
            New functions gadget_open_dbox(..), gadget_init_dbox(..),
             gadget_apply_dbox(..), gadget_close_dbox(..),
             gadget_dbox_update_componentid(..),
             gadget_dbox_update_window_name(..), gadget_dbox_mouse_click(..),
             gadget_reopen_dbox(..), gadget_dbox_key_pressed(..) added.
           c.gui:
            New functions gui_put_len_str(..), gui_get_len_str(..),
             gui_get_str(..), gui_put_str(..) added.

14-Jul-94  c.gadget, c.gadgdefs, h.windowedit:
            Various changes to treat icons common to *all* gadget property
             dboxes specially - this avoids duplication in gadgdefs.
           c.props, h.format:
            Add definition and code for setting the "generate an event after
             the window has been hidden" flag bit.
           Templates:
            "Properties" template updated accordingly.
           h.main:
            Update WINDOW_OBJECT_VERSION to 101.
           c.protocol:
            received_resed_object_load(..) - accepts version 100 as well as
             version 101 window objects. The extra field for window objects
             of version 101 - defaultfocus - is inserted into version 100
             objects.
           h.format:
            Add new field 'defaultfocus' to WindowTemplateRec.
           h.windowedit:
            Add new field 'defaultfocus' to WindowObjRec.
           c.windowedit:
            windowedit_load(..) - copies defaultfocus field from template to
             object.
            windowedit_save_object_to_memory(..) - copies defaultfocus field
             from object to template.
15-Jul-94  c.protocol:
            received_resed_object_load(..) - now updates version 100 objects
             to version 101 correctly (adjusting offsets and relocations
             as appropriate).
           h.format, h.windowedit:
            'type' field in gadget headers replaced by 'type' and 'size'
             fields - each a half-word (short).
           c.gadget:
            gadget_load(..) - now checks that the size field is either zero
             or is correct; error message if not.
            gadget_save(..) - sets the size field to zero, but will set it to
             the "correct" value as soon as Matt's checker accepts this ...
           !Palette and Palette: upgraded to version 101 resource files.
           c.gui, h.gui:
            New functions gui_put_opt_event(..), gui_get_opt_event,
             gui_put_mand_event(..), gui_get_mand_event(..).
           h.windowedit:
            New gadget field types FLD_OPT_EVENT and FLD_MAND_EVENT.
           c.gadgdefs:
            Added definition for action button gadgets.
           h.windowedit,c.gadget,c.gadgdefs:
            Added new field 'special' to allow special processing after
             applying a properties dbox to a gadget (eg to check that at most
             one action button is default).
           h.format:
            GENERATEEVENT and SELECTED flags added to option buttons.
           c.gadgdefs:
            Added definition for option button gadgets.
           Templates:
            Added 'none' button for event delivery to option button template.

18-Jul-94  c.gadgedefs, h.windowedit, c.gadget:
            Add new actions ACT_FADE, ACT_UNFADE, and rename previous FADE as
             ACT_TOGGLEFADE.
           c.gadgedefs, h.windowedit, c.gadget:
            Add new field type FLD_SPECIAL_SAVE which is used to specify a
             special action to be taken when applying that dbox field. This
             is used for the "default button" and "cancel button" icons for
             action buttons to make sure that there is always at most one of
             each of these in a window.
           c.drag:
            finalise_drag(..) now calls gadget_note_new_default_button(..)
             and gadget_note_new_cancel_button(..) whenever necessary to
             make sure that copies/moves do not create multiple default or
             multiple cancel buttons within the same window.
           c.gadgdefs, h.windowedit, c.gadget:
            New fLD_SPECIAL_SAVE removed - use the "special" field in the
             GadgetDefRec itself instead.

********   SrcFiler version 012 made from version 0L07 (01-Jul-94)   ********

           c.gadgdefs, h.windowedit, c.gadget:
            Add new field for GadgetDefRec - specialinit - and rename the
             special field specialapply. Add definitions for Labelled Box
             gadgets - which need specialinit and specialapply functions for
             the "label" field itself - which may be text or sprite.
           c.gadgdefs, h.windowedit, c.gadget:
            Writable fields implemented: needed new field types FLD_ALLOWABLE
             and FLD_LINK, and new action ACT_ALLOW.
           Templates:
            The "Writable" template altered to include a length field and
             corresponding adjuster arrows for the "allowable" string.
           c.gui, h.gui:
            New functions gui_get/put_allowable/link(..) for writable fields.

19-Jul-94  c.gadget:
            gadget_dbox_mouse_click(..) - now ignores any mouse events with
             buttons >= 16.
            Writable field gadget property dialogues implemented.
           h.windowedit:
            RADIOBUTTON_ON flag bit is now bit 2 instead of bit 1.
           c.gadgdefs, h.gadget, c.gadget:
            Prototype function gadget_rb_apply(..) added, ready to ensure
             that at most one radio button in any group is marked as 'on'
             when created ...
            Radio button gadget property dialogues implemented.
           h.format:
            Revised definition of slider gadget template to reflect latest
             specification.
           c.colours, h.colours:
            Re-organised code, so that colours_choose(..) can be an exported
             function to choose a colour for a display field using a colour
             menu.
           c.gadget, h.gadget, Messages:
            New function gadget_sl_apply(..) checks slider limit values and
             complains as necessary.
           h.windowedit, c.gadget:
            New field type FLD_COLOUR and action type ACT_COLOUR added to
             support colour field processing.
           c.gadgdefs:
            Slider gadget property dialogue boxes implemented.

20-Jul-94  h.format:
            Revised definition of draggable gadget template to reflect latest
             specificaton.
           Templates - removed redundant icons from Draggable template.
           c.gadgdefs:
            Draggable gadget property dialogue boxes implemented.
           Templates - removed opticon for "show menu" from Popup template.
           c.gadgdefs:
            Popup menu gadget property dialogue boxes implemented.
           c.gadgdefs:
            Adjuster arrow gadget property dialogue boxes implemented.
           h.format:
            Revised definition of number range gadget template to reflect
             latest specification.
           Templates - grouped radio buttons properly in NumberRange, and
            set validation strings for limits appropriately.
           h.windowedit, c.gadget:
            New action ACT_SPECIAL which calls a given function when the
             specified icon is select or adjust-clicked.
           h.gadget, c.gadget, Messages:
            Special functions gadget_nr_init, apply, slider, numerical,
             display and writable added.
           c.gadgdefs:
            Number range gadget property dialogue boxes implemented.
           h.format:
            Revised definition of string set gadget template to reflect
             latest specification.
           Templates - add length field and adjusters to "specify allowable
            characters" for StringSet template.
           h.gadget, c.gadget:
            Special functions gadget_ss_init, numerical, display and writable
             added.
           c.gadgdefs:
            String set gadget property dialogue boxes implemented.

21-Jul-94  c.gadget:
            gadget_load(..) - now forces bit 30 = 1 for labelled boxes; this
             is a temporary measure to make sure that they are plotted first.
           c.gadget, h.windowedit:
            New field types FLD_XFLAG, FLD_XPACKED and FLD_XCOLOUR added; new
             action type ACT_BUTTON added.
           c.props, h.props:
            Code in props_dbox_mouse_click(..) altered to call a new function
             props_button_choose(..) to choose a button type. This function
             is now also called to implement ACT_BUTTON actions.
           Templates - new template WimpIcon added.
           h.format:
            Added details of wimp icon template format.
           c.gadgdefs:
            Wimp Icon gadget property dialogue boxes implemented.

22-Jul-94  c.gadget, gadget_close_dbox(..):
           c.props, props_close_dbox(..):
           c.colours, colours_close_dbox(..):
           c.extent, extent_close_dbox(..):
           c.keycuts, keycuts_close_dbox(..):
            Code added to ensure that neither Cancel nor OK action buttons
             are selected when the window is deleted; this is a workaround
             for a Wimp bug that results in arbitrary overwrites (and hence
             subsequent unexpected address exceptions and aborts).
           c.windowedit:
            plot_gadget(..) - now plots selected gadget in focus window
             normally (instead of setting the "selected" bit).
           !ResEd.!Run:
            Now loads BorderUtils module only if the Wimp < 3.17.

           There are one or more bugs which seem to manifest themselves only
            on 3.11 - not on 3.5 - so I'm going ahead to release anyway. The
            fix above does not appear to have worked, and I've removed the
            code from c.gadget (but not from the other positions).

           common.h.resed: - version number updated to 0.07.

********   SrcFiler version 013 made from version 0.07 (22-Jul-94)   ********

           Set DEBUG = 0 in common.h.debug, DBMALLOC = 0 in common.h.dbmalloc
            and comment out CFLAGS = -DDEBUG=1 in MakeFile in shell, common,
            !Menu and !Window - and recompile for release.
           Remove 2> <ResEd$Dir>.pm from !ResEd.!Run
           Remove 2> <ResEd$Menu$Dir>.pm from !Menu.!Run
           Remove 2> <ResEd$Window$Dir>.pm from !Window.!Run

********   Version 0.07 (22-Jul-94) released on aquarius.$.release   ********

           common.h.resed: - version number updated to 0L08.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 0 in common.h.dbmalloc
            and uncomment in CFLAGS = -DDEBUG=1 in MakeFile in shell, common,
            !Menu and !Window; recompile.

25-Jul-94  Start constructing the skeletal Misc CSE application.

           shell.h.shell:
            Change SPRITENAMELEN from 12 to 13 to allow space for a 12 char
             sprite name plus terminator.

           Add !Icons22, !Sprites22 and Sprites22 as files to install to all
            MakeProto files (where appropriate).

           window.h.main:
           menu.h.main:
            Change SPRITENAMELEN from 12 to 13; as there are no references to
             this name in the code, this change cannot have any effect!

           !Window.Templates:
            The "validation" writable icon in WimpIcon template now has a
             buffer of size 256 instead of 12!

27-Jul-94  All "Wimp_DeleteWindow" calls replaced by "Wimp_CloseWindow" where
            a dialogue box is being deleted; this is a temporary (and very
            unsatisfactory!) workaround for the "slabbed icon" bug. Functions
            affected are:
             colours_close_dbox(..)
             extent_close_dbox(..)
             gadget_close_dbox(..)
             keycuts_close_dbox(..)
             props_close_dbox(..)

           !Menu.c.protocol, !Window.c.protocol:
            received_resed_object_loaded(..):
             Correct a bug - after an object has been successfully returned
              to the shell and its representation in the CSE has been freed,
              the 'pendingclose' field was reset; this no longer happens.

           Clear signs that almost everything is working in the Misc CSE!

           shell.c.protocol:
            received_resed_object_sending(..) - now calls
             document_modified(..) to note that the document has been
             modified whenever data is reloaded from a CSE; this didn't
             matter with "dynamic" CSEs, but does with "dbox-like" ones,
             since these latter never send "modified" messages.

28-Jul-94  !ResEd.!Run: added rmensure for FilterMgr.

           common.h.resed: - version number updated to 0.08.

********   SrcFiler version 014 made from version 0.08 (28-Jul-94)   ********

           Set DEBUG = 0 in common.h.debug, DBMALLOC = 0 in common.h.dbmalloc
            and remove line CFLAGS = -DDEBUG=1 in MakeFile and MakeProto in
            shell, common, !Menu, !Window and !Misc - and recompile for
            release.
           Remove 2> <ResEd$Dir>.pm from !ResEd.!Run
           Remove 2> <ResEd$Menu$Dir>.pm from !Menu.!Run
           Remove 2> <ResEd$Window$Dir>.pm from !Window.!Run
           Remove 2> <ResEd$Misc$Dir>.pm from !Misc.!Run

********   Version 0.08 (28-Jul-94) released on aquarius.$.release   ********

           common.h.resed: - version number updated to 0L09.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

           !Windows.Templates:
            LabelledBox - add "Filled" option icon.
           c.gadgdefs:
            Add field and actions for "Filled" flag for labelled box gadgets.
           c.gadget:
            gadget_bx_init(..) - shades "Filled" icon unless "Issprite" flag
             is set.
           !Windows.Templates:
            Display, Writable, NumberRange, StringSet - add "Justify" area.
           c.gadgdefs:
            Add fields and actions for processing the "Justify" area for the
             display, writable, numberrange and stringset gadgets.
           c.gadget:
            gadget_ss_init(..), gadget_ss_numerical(..),
            gadget_ss_display(..), gadget_ss_writable(..):
             Fade/unfade justify icons as necessary.
            gadget_nr_init(..), gadget_nr_numerical(..),
            gadget_nr_display(..), gadget_nr_writable(..):
             Fade/unfade justify icons as necessary.
           h.format:
            Added #define's for new justification flags.
           !Windows.Templates:
            New icons added to Draggable for specifying draggable type, and
             the flag to request Toolbox IDs at end of drag.
           c.gadgdefs:
            Add fields and actions for new draggable icons.
           h.format:
            #define new draggable flags.
           !Misc.Templates:
            ColourMenu, FontMenu - added option button for delivery of event
             when window is hidden.
           c.objdefs:
            Added appropriate flag field to ColourMenu and FontMenu.
           h.format:
            Added #define's for above flag fields.
           c.windowedit:
            click_in_gadget(..) - modified to examine gadgets at the top
             first of all.
            redraw_window_and_lassoo_or_resize_boxes(..) - modified to plot
             gadgets at the back before those at the front.

29-Jul-94  !Menu.h.format:
            Rename MENU_GENERATEEVENT as MENU_GENERATESHOWEVENT, and add new
             flag MENU_GENERATEHIDEEVENT.
            Add MENU_ENTRY_SUBMENUEVENT.
           !Menu.c.props:
            Replace all occurrences of MENU_GENERATEEVENT by
             MENU_GENERATESHOWEVENT, and all occurrences of I_MENUDBOX_EVENT
             by I_MENUDBOX_EVENT_BEFORE.
           !Menu.Templates:
            Added radio icon to specify "no submenu event" to the menu entry
             template, and opticon to specify "deliver event after hiding"
             to the menu template.
           Add new module c.gui, h.gui - initially copied from !Window.
           !Menu.c.props:
            Modify menu dbox processing to use gui functions, and also to
             take account of "event_when_hidden" flag.
           !Menu.c.menuedit:
            plot_titlebar(..), menuedit_calculate_menu_size(..) - minor
             changes to cope with plotting a menu whose title is empty (and
             so whose menu->title value is NULL).
           !Menu.c.props:
            Modify menu entry dbox processing to use gui functions, and to
             take account of "deliver no submenu event" flag.
           !Menu.h.menuedit:
            Change menu entry record structure: clickshow and submenushow are
             now char* fields (to be malloc'd as necessary) instead of
             char [MAX_OBJECT_NAME] fields. This allows ResEd to distinguish
             between NULL and empty string values here.
           !Menu.c.menuedit:
            menuedit_load(..), menuedit_object_size(..),
            menuedit_save_object_to_memory(..):
             Minor changes to cope with new format of clickshow and
              submenushow fields.
            entry_width(..), plot_entry(..), menuedit_justify_keycuts(..):
             Changes made to cope with NULL entry->text values.
           !Misc.c.objdefs, !Misc.c/h.object:
            Change to definition of Saveas object, and new function
             object_sa_init(..) to fade "support ram transfers" option unless
             "client participates" option is selected.
           common.h.resed: - version number updated to 0.09.

********   SrcFiler version 015 made from version 0.09 (29-Jul-94)   ********

           Set DEBUG = 0 in common.h.debug and DBMALLOC = 0 in
            common.h.dbmalloc - and recompile for release.

********   Version 0.09 (29-Jul-94) released on aquarius.$.release   ********

           common.h.resed: - version number updated to 0L09.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

08-Aug-94  !ResEd.!Run:
            RMEnsure FilterManager rather than FilterMgr!

           !Window.c.windowedit:
            windowedit_load(..) - no longer assumes a satsifactory window
             structure exists if 0->internal happens to be non-zero (thanks
             to Neil Kelleher for finding and fixing this bug!).

           shell.c.document:
            document_disambiguate_name(..): replace '.' by '_' here, so that
             disambiguated names are no longer invalid obect names!

           !ResEd.!Run:
            RMEnsure BorderUtils 0.04 - to make sure that the modified module
             is loaded which processes a new service call which can be made
             when a window is deleted.

           !ResEd.modules - now contains 0.04 of BorderUtils.

           !Window.c.gadget, gadget_close_dbox(..):
           !Window.c.colours, colours_close_dbox(..):
           !Window.c.extent, extent_close_dbox(..):
           !Window.c.keycuts, keycuts_close_dbox(..):
           !Window.c.props, props_close_dbox(..):
           !Misc.c.object, object_close_dbox(..):
            Remove conditional code which closes rather than deletes a window
             and add code to make Neil's new service call which is fielded by
             his new BorderUtils module to fix the slabbed icon bug.

           !Menu.c.props, props_close_menu_dbox(..):
                          props_close_entry_dbox(..):
            These routines now delete the window instead of just closing it;
             this brings their behaviour into line with that of !Window and
             !Misc.

           !Menu.h.menuedit:
            Remove the 'dboxopen' field from MenuEntryRec and MenuObjRec
             structures, since it is no longer required.
           !Menu.c.drag:
            copy_to_tmp(..) - remove 'new->dboxopen = FALSE'.
            finalise_drag(..) - remove test for entry->dboxopen when deciding
             whether to call props_update_entry_dbox(..) or not.
           !Menu.c.menuedit:
            menuedit_load(..) - always updates dbox title bar if a dbox
             exists (no longer tests dboxopen).
            menuedit_rename_menu(..) - as above.
            menuedit_justify_keycuts(..) - no longer checks dboxopen before
             updating any dbox.
           !Menu.c.props:
            props_open_menu_dbox(..) - no longer sets dboxopen field, and no
             longer reopens a previously-closed dbox - since no such thing
             can exist.
            props_close_menu_dbox(..) - no longer checks dboxopen, and does
             not reset this field.
            props_open_entry_dbox(..), props_close_entry_dbox(..) - as above.

           !Window.Templates: all moved to middle of screen.

           !Window.c.gadget:
            gadget_ss_init(..), gadget_ss_numerical(..):
            gadget_ss_display(..), gadget_ss_writable(..):
            gadget_nr_init(..), gadget_nr_numerical(..):
            gadget_nr_display(..), gadget_nr_writable(..):
             The "justify" radio buttons for number ranges and stringsets
              are now faded only if the gadget has no display field.

           !Menu.h.format:
            New menu entry flag bit MENU_ENTRY_CLICKSHOWTRANSIENT added.
           !Menu.Templates:
            "Show as transient" option icon added to entrydbox.
           !Menu.c.props:
            props_update_entry_dbox(..):
             Added code to initialise this icon properly.
            apply_entry_dbox(..) - sets the corresponding flag from the icon.
            props_entry_dbox_mouse_click(..) - toggles shadedness of the new
             icon as appropriate.

09-Aug-94  !Window.Templates:
            ActionButt modified to include new "Shaow as transient" option
             icon.
           h.format:
            New flag bit ACTIONBUTTON_CLICKSHOWTRANSIENT defined.
           c.gadgdefs:
            Definition of action button modified to process the new option
             icon and its associated flag bit.
           c.gadget, h.gadget:
            gadget_ab_init(..) - new function added to fade the option icon
             if no object is to be shown.

           c.windowedit:
            Remove plot_gadget(..) function, replacing it by in-line calls
             from redraw_window_and_lassoo_or_resize_boxes(..).
            redraw_window_and_lassoo_or_resize_boxes(..):
             Always scans gadget list a third time to highlight any selected
              gadgets; calls plot_highlight(..) to do this.
            plot_resize_ears(..) renamed as plot_highlight(..), and altered
             to plot a dotted rectangle about any selected gadget, and to
             plot hollow resize ears only if the window has input focus.
             Didn't like the dotted rectangle - either just inside or just
             outside the gadget's bbox - so reverted to a solid rectangle.
             Finally moved the ears in a pixel so that their inner edges sit
             over the rectangle; doesn't look too bad now.

           !Window.Messages: Replace Palette... by Gadgets...
           !Menu.Messages: Replace Menu properties... by Properties...
                           Replace Palette... by Menu entries...
           !ResEd.Messages: Replace Palette... by Prototypes...
                            Remove FM_Test:Test...
           shell.c.document: remove all references to FM_Test and
            FILEMENU_TEST.
           !Windows.Templates: palwin title changed to "Gadgets".
           !Menu.Templates: palwin title changed to "Menu entries".
           !ResEd.Templates: PalProto title changed to "Object prototypes".
           !Windows.c.windowedit: remove all references to palwin - since
            this template is not used.
           !Windows.Templates: delete palwin.

10-Aug-94  !Menu.c.menuedit:
            plot_entry(..): this routine now looks up appropriate foreground
             and background colours, and filled/selected/shaded flags for
             plotting the various components of each menu entry according to
             its state (hasfocus, shaded, selected).
            Two tables - textflags[] and spriteflags[] - added so that it's
             easy to change appearances in the light of feedback.

           common.h.resed: - version number updated to 0.10.

********   SrcFiler version 016 made from version 0.10 (10-Aug-94)   ********

           Set DEBUG = 0 in common.h.debug and DBMALLOC = 0 in
            common.h.dbmalloc - and recompile for release.

********   Version 0.10 (10-Aug-94) released on aquarius.$.release   ********

           common.h.resed: - version number updated to 0L11.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

           !Window.Templates:
            Add icons to set default focus for the window to the Properties
             template.
           c.props:
            apply_dbox(..), props_update_dbox(..), props_dbox_mouse_click(..)
             Code added to handle default focus icons.
           h.format:
            #define's for special 'defaultfocus' values.

           !Windows.Palette - replaced by Matt Hammond's new palette.

           !Menu.c.menuedit:
            plot_entry(..) - fix bug which caused menu entries in the palette
             to be displayed incorrectly.
            menuedit_calculate_menu_size(..):
             The extra space between menu entries for palette positioning is
              now forced to be a multiple of 4 OS units - thus avoiding the
              nasty appearance of the palette in rectangular pixel modes.

11-Aug-94  !Window.c.windowedit:
            prepare_menu(..) - now greys out the "Make radio group" option
             unless the entire selection is radio buttons.

           !Menu.c.menuedit:
            plot_entry(..): if the menu item includes a keyboard shortcut, it
             is now plotted in two separate but adjoining pieces; this cures
             a bug introduced with the last release.

           !Window.!Palette - the "Allow offscreen" bit is now off.

           !Window.Messages:
            Added "EM_Slrg:Select radio group".
           !Window.c.windowedit:
            Added new #define EDITMENU_SELRADIOGROUP.
            create_menu(..):
             menu_create(..) call for EditMenu now specifies 10 entries.
             Line to add the "Select radio group" entry inserted.
            prepare_menu(..):
             Code added to grey out "Select radio group" unless only gadgets
              in the same group are selected.
            windowmenu_cb(..):
             Calls gadget_rb_select_radio_group(..) if this item is chosen,
              and gadget_rb_make_radio_group(..) if "Make radio group" is
              chosen.
           c.gadget, h.gadget:
            New functions gadget_rb_make/select_radio_group(..) defined.
            gadget_rb_apply(..) - now ensures that no more than one radio
             button in any one group is marked as "selected".
           c.drag:
            finalise_drag(..):
             Any radio buttons copied within the same window are marked as
              not selected.
             Any radio groups copied or moved to another window are
              renumbered in such a way that they do not clash with any
              pre-exisiting groups in the destination window.

           c.windowedit:
            redraw_window_and_lassoo_or_resize_boxes(..) now calls a new
             function plot_numberrange_special_ear(..) to plot the internal
             resize ear for numberranges which have a numerical display.
            windowedit_mouse_click(..), click_in_gadget(..):
             Code to check for SEL/DRAG on a numberrange's internal resize
              ear added; an extra parameter (gadget) is passed to
              resize_start(..).
            A single "closure" parameter is now passed through the redraw
             routines instead of an {offset, earnum} pair.
           c.resize, h.resize:
            New field "gadget" added to ResizeClosureRec to identify the
             numberrange gadget whose display field is being resized.
            resize_plot_boxes(..) now takes a resize closure parameter
             instead of separate earnum and offset parameters.
            update_resize_boxes(..) now takes a resize closure parameter
             instead of separate window, earnum and offset parameters.
            update_resize_boxes(..), resize_interactor(..), resize_start(..):
             Calls to resize_plot_boxes(..) and update_resize_boxes(..)
              modified accordingly.
            resize_selected_gadgets(..) now takes a resize closure parameter
             instead of separate window, offset and earnum parameters, and
             its call from resize_interactor(..) is modified accordingly.
            calc_new_box_width(..) - new function.
            resize_plot_boxes(..), resize_selected_gadgets(..):
             Code added for numberrange case, including constraining the
              mouse pointer when a "boundary" is hit.
            resize_interactor(..):
             "Cancel" code now explicitly resets mouse bounding box to be
              infinite, since sometimes this didn't happen normally.

           !ResEd.!Run:
            Now loads modules from System:modules or System:modules.Toolbox
             if required.
           !ResEd.modules:
            Deleted.

15-Aug-94  !Window.c.windowedit:
            windowedit_mouse_click(..):
             Recognizes CTRL/SHFT drags, and calls winddrag_move_start(..)
              (for CTRL/SHFT/SEL/DRAG) and winddrag_resize_start(..) (for
              CTRL/SHFT/ADJ/DRAG).
           !Window.c.winddrag, h.winddrag:
            New source module: MakeFile and MakeProto modified accordingly.
            This module handles moving and resizing the editing window as a
             result of a CTRL/SHFT/SEL-ADJ/DRAG.
           common.c.wimp, h.wimp:
            New variables screenx and screeny are set to the screen size in
             OS units by wimp_examine_mode(..).

           !Window.c.windowedit:
            windowmenu_cb(..):
             Calls gadget_link_writables(window) when "Link writables" is
              chosen.
            prepare_menu(..) - shades "Link writables" entry if the selection
             does not include any writable gadgets.
           !Window.c.gadget, h.gadget:
            New function gadget_link_writables(..) added.


           !Window.Palette - number range gadget now has its display field
            wide enough to show four digits.

16-Aug-94  !Window.c.gadget:
            compare_writables(..): algorithm changed to Steve's !WinEdit
             version which produces better results when icons are not exactly
             in alignment.
           shell.c.objflags:
            objflags_interactor(..):
             Looks for clicks on all the radio buttons icons, and makes sure
              that adjust clicks do not turn the buttons off.
            update(..):
             Added call to document_modified(..) to ensure that * appears in
              title bar after object flags have been modified.
           !Menu.Templates:
            menuwin template title bar changed to "Menu: %.12s" to bring it
             in line with the specification.
            entrydbox template title maximum length increased to allow full
             11-char object names.
           !Menu.c.menuedit:
            menuedit_load_prototypes(..):
             Calls create_menu(..).
            post_menumenu(..):
             No longer creates menu if necessary; this allows keyboard
              shortcuts to work in a menu editing window before any menu has
              been shown!
           !Window.c.windowedit:
            windowedit_load_prototypes(..):
             Calls create_menu(..).
            post_windowmenu(..):
             No longer creates menu if necessary; this allows keyboard
              shortcuts to work in a window editing window before any menu
              has been shown!
           !Menu.c.menuedit:
            menuedit_rename_menu(..):
             Now only calls props_update_menu_dbox(..) if the menu dbox
              exists.
           !Menu.c.props:
            props_open_entry_dbox(..):
             Now sets caret in the entry text field, instead of the component
              id field, when first opened.
           !Window.c.windinfo:
            windinfo_open(..):
             Code to add "*" for modified window is now compiled only if the
              DEBUG flag is set.
           All templates checked for sensible writable icon lengths, and some
            minor adjustments made.
           !ResEd.Makefile no longer installs the module directory.

           common.h.resed: - version number updated to 0.11.
           Set DEBUG = 0 in common.h.debug and DBMALLOC = 0 in
            common.h.dbmalloc - and recompile for release.
********   Make the first alpha release                              ********
********   Version 0.11 (16-Aug-94) released on aquarius.$.release   ********
********   SrcFiler version 017 made from version 0.11 (16-Aug-94)   ********
           common.h.resed: - version number updated to 0L12.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

           !Window.Templates, !ResEd.Templates:
            Used !TemplEd to "unfill" all display fields, so that they look
             "marbled" on new style desktops.

17-Aug-94  All Palette and !Palette files checked and edited to a form deemed
            suitable for the alpha release.

           !Window.c.gadget:
            gadget_link_writables(..) - now calls protocol_.._modified(..).

           !Window.h.windowedit:
            Add new field "workBG" to hold the true colour for a window's
             background - this is because a "transparent" background must be
             displayed by ResEd as solid (eg white).
           !Window.c.windowedit:
            windowedit_load(..):
             Copies window's work area background colour to workBG field, and
              resets window's true workBG colour to white if transparent was
              specified.
            windowedit_save_object_to_memory(..):
             Saves window's work area background colour from the new workBG
              field.
           !Window.c.colours:
            apply_dbox(..):
             Updates both workBG and window->window->colours.workBG fields as
              appropriate.
            colours_update_dbox(..):
             Sets icon in colours dbox from the workBG field.

           !Window.c.windowedit:
            windowedit_load(..):
             New position of window forced on-screen by the wimp was not
              correctly noted - bug fixed.

           common.c.interactor, common.h.interactor:
            New function interactor_active() added which returns TRUE iff an
             interactor is currently on the stack.
           !Window.c.main:
           !Menu.c.main:
           !Misc.c.main:
            key_pressed(..):
             Only uses ESC to cancel interactors if one is present!
           !Window.c.gadget:
            gadget_dbox_key_pressed(..):
           !Window.c.props:
            props_dbox_key_pressed(..):
           !Window.c.colours:
            colours_dbox_key_pressed(..):
           !Window.c.extent:
            extent_dbox_key_pressed(..):
           !Window.c.keycuts:
            keycuts_dbox_key_pressed(..):
           !Menu.c.props:
            props_menu_dbox_key_pressed(..):
            props_entry_dbox_key_pressed(..):
           !Misc.c.object:
            object_dbox_key_pressed(..):
             Accept ESC as well as RETURN.

18-Aug-94  !ResEd.Templates:
            Copy, Rename and SaveAs templates now have correct yellow colour
             when given the input focus.
           shell.c.objflags:
            objflags_open(..):
             Now gives input focus (invisible caret) to the Object flags dbox
              when it is opened.
            objflags_interactor(..):
             Returns input focus to parent document viewer window when
              cancelled.
           !Window.c.align:
            align_open(..):
             Gives input focus to Align dbox when opened.
            align_interactor(..):
             Returns input focus to parent window when cancelled.
           !Window.c.gadget:
            gadget_dbox_mouse_click(..):
           !Window.c.props:
            props_dbox_mouse_click(..):
           !Window.c.colours:
            colours_dbox_mouse_click(..):
           !Window.c.extent:
            extent_dbox_mouse_click(..):
           !Window.c.keycuts:
            keycuts_dbox_mouse_click(..):
           !Menu.c.props:
            props_menu_dbox_mouse_click(..):
            props_entry_dbox_mouse_click(..):
           !Misc.c.object:
            object_dbox_mouse_click(..):
             Gives input focus to dbox regardless.
           !Window.Templates:
           !Misc.Templates:
           !Menu.Templates:
            Change button type of all gadget property and window property
             dboxes - other than transients - to "click", so that clicking
             anywhere in a dbox gives it the input focus.
            Ensure "sort" order (for TAB/cursor key movement between writable
             icons) is correct.
            Ensure all writables have KAT in their validation string.
           !Window.Templates:
           !ResEd.Templates:
            Ensure that the "input focus" colour is the same as the "normal"
             title bar colour for all dialogue boxes that are displayed
             transiently (eg saveas, copy, objflags etc.). Try and find that
             rule in the Style Guide ...
           !Window.Templates:
            WimpIcon - remove writables outside window's extent - this fixes
             a bug whereby TAB stopped stepping through fields in the correct
             way!

           common.h.resed: - version number updated to 0.12.
           Set DEBUG = 0 in common.h.debug and DBMALLOC = 0 in
            common.h.dbmalloc - and recompile for release.
********   Make the second alpha release                             ********
********   Version 0.12 (18-Aug-94) released on aquarius.$.release   ********
********   SrcFiler version 018 made from version 0.12 (18-Aug-94)   ********
           common.h.resed: - version number updated to 0L13.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

19-Aug-94  !Misc.!Palette:
            "Deliver event before showing" and "Deliver event when hidden"
             flags set on for the prototype FontMenu and ColourMenu objects.
             (This is because of a bug in the corresponding Toolbox modules).

22-Aug-94  !Misc.!Palette:
            FontMenu and ColourMenu flags mentioned above now switched off
             again, since the Toolbox module bugs have been fixed.

           !Window.h.format:
            The "drag-type" #defines have been corrected; previously "Drag
             only" set "Click/drag", "Click/drag" set "Doubleclick/drag",
             and "Doubleclick/drag" generated an error.
           !Window.Palette:
            The draggable gadget's type is set to "Drag" again.

24-Aug-94  !Misc.h.objedit:
            Added new structures to define the effect of dropping an object
             onto an object's dialogue box.
           !Window.h.windowedit:
            Added new structures to define the effect of dropping an object
             or a gadget onto a gadget's properties dialogue box.
           !Misc.c.objdefs:
            Added dummy "DropDefRecs" for all object classes.
           !Window.c.gadgdefs:
            Added dummy "DropDefRecs" for all gadget types.
           !Misc.c.protocol:
            New function locate_drop_action(..) added.
            protocol_send_resed_object_name_request(..) and
             received_resed_object_name(..) now operational: when an object
             is dropped in an interesting place, object_object_drop(..) is
             called to execute the appropriate drop action.
           !Misc.h.object, !Misc.c.object:
            New function object_object_drop(..) deals with dropped objects.
           !Misc.h.main:
            Added #define's for WINDOW_OBJECT_CLASS and MENU_OBJECT_CLASS.
           !Misc.c.objdefs:
            Modified to include "drop defs" for all object classes.
           !Window.c.gadgdefs:
            Added DropDef's for object drops into popups and action buttons.
           !Window.c.gadget, !Window.h.gadget:
            New function gadget_object_drop(..) added to process object drops
             into gadget property dialogue boxes.
           !Window.c.protocol:
            New function locate_drop_action(..) added.
            protocol_send_resed_object_name_request(..) modified as for Misc.
            received_resed_object_name(..) modified as for !Misc.
            Further changes to the above functions to process object drops
             on window property dboxes.
           !Menu.c.props:
            props_fill_in_object_name(..):
             Updated to take account of new icons in the menu entry dbox,
              and to accept a more limited area for drops (in line with the
              other CSEs).
            New function props_drop_icon(..).
           !Menu.c.protocol:
            protocol_send_resed_object_name_request(..):
             Calls props_drop_icon(..) to determine whether the drop is an
              acceptable one.

           !Window.c.drag:
            Changes to drag_interactor(..) to call either
             props_gadget_drop(..) or gadget_gadget_drop(..) if a drag of a
             single gadget finishes on a window properties dbox or a
             gadget properties dbox.
           !Window.c.props, !Window.h.props:
            New function props_gadget_drop(..) processes gadget drops on a
             window properties dbox.
           !Window.c.gadget, !Window.h.gadget:
            New function gadget_gadget_drop(..) process gadget drops on a
             gadget properties dbox.
           !Window.c.gadgdefs:
            Added DropDef's for the "Before" and "After" gadget id fields in
             writables, numberranges and stringsets.

26-Aug-94  !Misc.Templates:
            ProgInfo - Licence type field made into a (larger) display field
             and a popup menu icon added to its right.
           !Misc.c.objdefs:
            ProgInfo - HASLICENCE toggle-fades LICENCE_POPUP.
                     - LICENCE and LICENCE_POPUP marked as ACT_SPECIAL, and
                        call object_pi_licence_popup(..).
                     - New "apply" function object_pi_apply(..).
                     - LICENCE icon no longer defined as an integer field.
           !Misc.c.object, !Misc.h.object:
            Define new functions object_pi_licence_popup(..),
             object_pi_create_menu(..) and object_pi_apply(..).
           !Misc.c.main:
            Call object_pi_create_menu(..) from
             load_prototypes_and_create_menus(..).
           !Misc.Messages:
            Entries added to describe the licence type popup menu contents.

           common.c.menu:
            menu_get_entry(..):
             This function now works even if the entry contains a string that
              is 12 or fewer characters in size!

           !Misc.Templates:
            Iconbar - Position field reduced in size, priority field made
             wider, and a popup menu icon added to the right of Position.
           !Misc.c.objdefs:
            Iconbar - POSITION and POSITION_POPUP marked as ACT_SPECIAL, and
                       call object_ib_position_popup.
           !Misc.c.object, !Misc.h.object:
            Define new functions object_ib_position_popup(..),
             object_ib_create_menu(..).
           !Misc.Messages:
            Entries added to describe the position popup menu contents.
           !Misc.c.main:
            Call object_ib_create_menu(..) from
             load_prototypes_and_create_menus(..).

           !Misc.Templates:
            FileInfo, SaveAs:
             Added popup menu icon to right of Filetype icon, and made the
              latter a display field.
            Filetype - a new dialogue box.
           !Misc.Messages:
            Entries added to describe the filetype popup menu contents.
           !Misc.c.objdefs:
            FileInfo, SaveAs:
             FILETYPE and FILETYPE_POPUP marked as ACT_SPECIAL, and call
              object_fi/sa_filetype_popup.
             FILETYPE changed to a FiletypeFieldRec.
           !Misc.c.object, !Misc.h.object:
            Define new functions object_fi/sa_filetype_popup(..),
             object_fisa_create_menu(..).
           !Misc.c.main:
            Call object_fisa_create_menu(..) from
             load_prototypes_and_create_menus(..).
           !Misc.h.objedit, !Misc.c.object:
            Add definitions and processing for new field type FLD_FILETYPE.
           !Misc.c.gui, !Misc.h.gui:
            New functions gui_put/get_filetype(..).
            New functions gui_put/get_filetype_string(..).

30-Aug-94  !Misc.c.main:
            load_prototypes_and_create_menus(..):
             Doesn't close template file until the end, so that those
              functions which create menus can also load further templates if
              they wish.
           !Misc.c.gui, !Misc.h.gui, !Misc.c.object:
            gui_put_filetype_string(..) and filetypemenu_cb(..) altered so
             that any error from OS_FSControl 31 is correctly propagated
             back.
31-Aug-94   New functions filetype_interactor(..), show_filetypewin(..) and
             gui_put_filetype_from_user(..) added to implement the "Other
             filetype" dialogue.

           !Misc.Templates:
            FontMenu, FontDbox: new pop-up menu icon added to right of
             writable for initial font.
           !Misc.c.objdefs:
            FontMenu, FontDbox:
             HASINITIAL toggles INITIAL_POPUP faded status.
             Initial functions defined.
             INITIAL_POPUP and INITIAL defined as ACT_SPECIAL, calling:
              object_fm_ticked_popup(..), object_fd_initial_popup(..)
              respectively.
           !Misc.c.object, !Misc.h.object:
            New functions object_fd_init(..) and object_fm_init(..) defined.
            New functions object_fm_ticked_popup(..) and
             object_fd_initial_popup(..) defined.
           !Misc.c.object:
            Functions object_fmfd_font_popup(..) and fontmenu_cb(..) added to
             generate, display and process choices from the font selection
             menu.

           !Misc.c.object:
            object_dbox_key_pressed(..):
           !Window.c.gadget:
            gadget_dbox_key_pressed(..):
           !Window.c.props:
            props_dbox_key_pressed(..):
           !Window.c.colours:
            colours_dbox_key_pressed(..):
             Calls interactor_cancel(..) to remove any pop-up menus still on
              display if RET or SHFT/RET is received; no need to do this for
              ESC or SHFT/ESC since ESC cancels any foreground interaction
              in precedence to the dialogue box in any case.

           !Misc.Templates:
            ColourDbox: COLOUR field made a display field, and a pop-up menu
             icon COLOUR_POPUP added to its right.
           !Misc.c.objdefs:
            ColourDbox: COLOUR and COLOUR_POPUP defined as ACT_SPECIAL,
             calling object_cd_colour_popup(..). COLOUR removed from field
             list.
           !Misc.c.object:
            object_cd_init(..) - now initialises the COLOUR display field to
             an 8-digit hexadecimal value using gui_put_rgb_colour(..).
01-Sep-94  !Misc.c.gui, !Misc.h.gui:
            New function gui_put_rgb_colour(..) added.
           !Misc.c.object, !Misc.h.object:
            New function object_cd_colour_popup(..) added.
           !ResEd.!Run:
            RMEnsure's version 0.16 of the Colour Picker.
           !Misc.c.objdefs, c.object, h.object, c.gui, h.gui:
            New function gui_get_rgb_colour(..) used by object_cd_apply(..)
             to retrieve value from COLOUR field in ColourDbox dbox.

           !Misc.h.objedit, c.objdefs:
            New field "specialstartup" added to ObjectDefRec's; this contains
             (NULL or) the address of a function to call during start-up.
            All menu creation functions now defined as startup functions.
           !Misc.c.main:
            load_prototypes_and_create_menus(..) now calls the start-up
             functions generically instead of explicitly.

           common.h.resed: - version number updated to 0.13.
           Set DEBUG = 0 in common.h.debug and DBMALLOC = 0 in
            common.h.dbmalloc - and recompile for release.
********   Version 0.13 (01-Sep-94) released on aquarius.$.release   ********
********   SrcFiler version 019 made from version 0.13 (01-Sep-94)   ********
           common.h.resed: - version number updated to 0L14.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

02-Sep-94  !Window.Templates:
            Remove "Align" template.
           !Window.c.main, c.align, h.align:
            Remove align_load_prototypes(..).
           !Window.Messages:
            New entries to describe the align menu.
           !Window.c.windowedit:
            create_menu(..) - now creates the align sub-menu.
            show_align(..) - is no longer needed, so has been removed.
            windowmenu_cb(..) - now processes align sub-menu hits by calling
             align_selection_to (gadget, how), where 'gadget' is the gadget
              over which the menu button was clicked, and 'how' indicates
              which alignment option was chosen. Other functions affected
              are post_windowmenu(..) and prepare_menu(..).
           !Window.c.align, h.align:
            New function align_selection_to(..) defined.
           common.h.wimp:
            WIMP_ALIGN_COORD(x) now rounds rather than truncates.

05-Sep-94  !Window.Templates:
            Small changes to Grid template (length of spacing writables).
            Remove icons connected with colour selection.
           !Window.h.windowedit:
            Remove 'colour' field from GridRecs.
           !Window.c.grid:
            Major changes to implement grid dbox functionality.
           !Window.c.windowedit:
            redraw_window_and_lassoo_or_resize_boxes(..) now displays the
             grid - by calling grid_show(..) - as well.

           !Window.c.windowedit:
            windowmenu_cb(..) - calls grid_snap(..) when this item chosen.
           !Window.c.grid, h.grid:
            New function grid_snap(..) defined.
           !Window.h.windowedit:
           !Window.c.gadgdefs:
            New fields to define a gadget's "alignment point" added to the
             GadgetDefRec; and gadget definitions updated to set them as
             appropriate.
           !Window.c.gadget, h.gadget:
            New function gadget_lb_alignpos(..) added, which returns the
             alignment position of the given label gadget.

           !Window.c.windowedit:
            windowedit_key_pressed(..) - now deals with ^R (make radio group)
             and ^S properly.

06-Sep-94  !Window.c.drag:
            finalise_drag(..):
             If the drag is a move or copy within one window, the distance
              moved is rounded to the nearest multiple of grid spacing.
           !Window.c.resize:
            calculate_new_bbox(..):
             Round new size to nearest multiple of grid-spacing.
           !Window.c.drag, c.grid, h.grid, c.resize:
            New function grid_snap_point(..) added, and used to simplify all
             the grid-snapping coding.

           !Window.c.drag:
            drag_interactor(..):
             Code added to take note of cursor key presses during a drag,
              which will "nudge" the pointer by 4 OS units in the desired
              direction.
           common.c.dragdrop, h.dragdrop:
            dragdrop_nudge(..):
             New utility function added, to make it easy to add "nudging"
              wherever we want it.
           !Window.c.move, !Window.c.resize:
            "Nudging" added to move_interactor(..) and resize_interactor(..).

           common.h.resed: - version number updated to 0.14.
           Set DEBUG = 0 in common.h.debug and DBMALLOC = 0 in
            common.h.dbmalloc - and recompile for release.
********   Version 0.14 (06-Sep-94) released on aquarius.$.release   ********
********   SrcFiler version 020 made from version 0.14 (06-Sep-94)   ********
           common.h.resed: - version number updated to 0L15.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

           !Window.c.move:
            move_selected_gadgets(..):
             Now uses grid_snap_point(..) to make sure that gadgets moved by
              ADJ/dragging resize ears are also forced to grid spacing when
              grid lock is on.

07-Sep-94  !Window.Messages:
            "Gadgets..." menu entry text now includes keyboard shortcut ^G.
            KWM_Gadg defined to be 7 ( = ^G).
           !Window.c.windowedit:
            Added definition for key_gadgets, which is initialised in
             create_menu(..) and actioned in windowedit_key_pressed(..).

13-Sep-94  !Misc.!Palette:
            Default "Try string" in FontDbox now reads "... jumps ..." in
             place of "... jumped ...".
            Default length for titles all set to zero, since the Toolbox
             modules can now cope with this.

           shell.c.document:
            document_save_to_memory(..):
             Now sets versionnumber and objectoffset fields to the "latest"
              value; that is, to the values required by the version that
              the shell creates.
            document_load(..):
             No longer initialises a document's versionnumber from the first
              resource file that is loaded.
           shell.c.document, h.shell
            DEFAULT_VERSION replaced by RESF_VERSION.

14-Sep-94  !Misc.c.object:
            object_load(..):
             Scans the fields array, and sets the lengths of any fields which
              are exactly the right size to -1.
            object_save(..):
             Scans the fields array, replacing any "-1" length values by the
              correct explicit value.
           !Misc.c.gui:
            gui_put_len_str(..), gui_put_len_opt_str(..),
            gui_get_len_str(..), gui_get_len_opt_str(..):
             Modified to take account of -1/* as possible value.
           !Misc.c.gui, h.gui:
            gui_load_len_field(..), gui_save_len_field(..):
             New functions called from object_load(..) and object_save(..).
            gui_adjust_len(..):
             Modified to take account of "*" possibility - needs extra
              parameter.
           !Misc.h.objedit, !Misc.c.objdefs:
            ACT_ADJUST records now have to include the "valicon"
             corresponding to the "lenicon" to be adjusted.
           !Misc.c.object:
            object_dbox_mouse_click(..):
             Extra parameter added to calls of gui_adjust_len(..).
           !Misc.Templates:
            All "Length" icons now allow "*".
           !Misc.!Palette:
            Default length for messages in DCS and Quit is now zero (*).

           !Menu.c.menuedit:
            menuedit_load(..):
             Sets menu title and help text lengths to -1 if they are exact.
             Sets menu entry text and help text lengths to -1 if they are
              exact.
            menuedit_save_object_to_memory(..):
             Restores explicit lengths where necessary.
           !Menu.c.gui:
            gui_put_len_str(..), gui_put_len_opt_str(..),
            gui_get_len_str(..), gui_get_len_opt_str(..):
             Modified to take account of -1/* as possible value.
           !Menu.c.gui, h.gui:
            gui_adjust_len(..):
             Modified to take account of "*" possibility - needs extra
              parameter.
            gui_load_len_field(..), gui_save_len_field(..) - new functions
             called from menuedit_load/save_object_to_memory(..).
           !Menu.c.props:
            props_menu_dbox_mouse_click(..):
            props_entry_dbox_mouse_click(..):
             Calls to gui_adjust_len(..) modified by adding extra parameter.
           !Menu.Templates:
            All "Length" icons allow "*".

           !Window.Templates:
            All "length" icons allow "*".
           !Window.c.gui, h.gui:
            New functions gui_load_len_field(..), gui_save_len_field(..).
            gui_put_len_str(..), gui_put_len_opt_str(..),
            gui_get_len_str(..), gui_get_len_opt_str(..):
             Modified to take account of -1/* as possible value.
            gui_adjust_len(..):
             Modified to take account of "*" possibility - needs extra
              parameter.
           !Window.c.windowedit:
            windowedit_load(..):
             Checks title, help and pointer shape fields, setting the length
              to -1 if it is exactly what is required.
            windowedit_save_object_to_memory(..):
             Replaces any -1 lengths by the correct value.
           !Window.c.gadget:
            gadget_load(..), gadget_save(..):
             Replace any -1 lengths by the correct value.
           !Window.h.windowedit, c.gadgdefs:
            ACT_ADJUST records now have to include the "valicon"
             corresponding to the "lenicon" to be adjusted.
           !Window.c.gadget:
            gadget_dbox_mouse_click(..):
           !Window.c.props:
            props_dbox_mouse_click(..):
           !Window.c.grid:
            grid_interactor(..):
             Appropriate extra parameters added to calls of
              gui_adjust_len(..).
19-Sep-94  !Window.h.windowedit:
            New fields extension, extensionsize and localmaxhelp added to
             GadgetRec's.
            Remove�"pendingsnap" field - doesn't seem to be required.
           !Window.c.gadget:
            gadget_load(..) - creates and initialises extension record if
             required.
            gadget_save(..) - no longer needs to deal with "-1" lengths.
            gadget_free(..) - frees any extension record.
            gadget_copy(..) - clones any extension record.
            gadget_init_dbox(..) - uses "local" copies of length fields.
            gadget_apply_dbox(..) - updates both original and local copies of
             length fields.
           !Window.c.gui, h.gui:
            gui_load_len_field(..) - now returns length value instead of
             filling it in.
            gui_save_len_field(..) - modified in a similar way for
             consistency.
           !Window.c.windowedit:
            windowedit_load(..):
             Calls to gui_save_len_field(..) modified.
            windowedit_save_object_to_memory(..):
             Calls to gui_save_len_field(..) modified.
           !Window.c.gui:
            gui_get/put_allowable(..) - now deals with -1/* length values.
           !Help files created for !ResEd and the three CSEs.

           !Menu.Templates:
            Changed to allow user-specified events before showing and when
             hidden.
           !Menu.h.menuedit:
            New fields showevent and hideevent for MenuObjRec.
           !Menu.h.format:
            New fields showevent and hideevent for MenuTemplateRec.
           !Menu.h.main:
            MENU_OBJECT_VERSION = 102 now.
           !Menu.c.props:
            props_update_menu_dbox(..):
            props_apply_menu_dbox(..):
            props_menu_dbox_mouse_click(..):
             Add code to process new menu dbox icons properly.
           !Menu.c.protocol:
            received_resed_object_load(..):
             Add code to convert 101 version menu objects to 102 objects;
              remove code that converted 100 to 101 objects.
           !Menu.c.menuedit:
            menuedit_load(..):
            menuedit_save_object_to_memory:
             Add code to load/save new fields showevent and hideevent.

           !Window.c.gui, !Misc.c.gui:
            gui_get/put_opt/mand_event(..) - now use -1 as default event
             value instead of zero!

           !Window.h.windowedit:
            Add definition for WRITABLEFIELD_PASSWORD flag.
           !Window.Templates:
            Add option icon for Password-type behaviour in writable.
           !Window.c.gadgdefs:
            Add FLD definition for Password flag/icon.

           !Window.h.format:
           !Window.h.windowedit:
            Added new fields showevent, hideevent, toolbaribl/itl/ebl/etl and
             new flag WINDOW_ISTOOLBAR to WindowObjRec's and to
             WindowTemplateRec's.
           !Window.h.main:
            Update WINDOW_OBJECT_VERSION to 102.
           !Window.c.protocol:
            received_resed_object_load(..):
             No longer accepts version 100 window templates, but instead will
              accept version 101 and upgrade them to version 102.
           !Window.c.windowedit:
            windowedit_load(..):
            windowedit_object_size(..):
            windowedit_save_object_to_memory(..):
             Updated to load/save the new fields.

20-Sep-94  !Menu.Palette, !Menu.!Palette:
            Both converted to version 102 format.

           !Window.Palette, !Window.!Palette:
            Both converted to version 102 format.
           !Window.Templates:
            Changed to allow user-specified events before showing and when
             hidden.
           !Window.c.props:
            apply_dbox(..):
            props_update_dbox(..):
            props_dbox_mouse_click(..):
             Modified to process new showevent/hideevent fields/icons.

           shell.c.document:
            sort_by_name(..):
             This function is now case-insensitive.

           !Window.!Palette:
            Added a new prototype window template called Toolbar - which has
             the Toolbar flag bit set.
           !Window.c.windowedit, !Window.Messages:
            Add new main menu entry "Toolbars...".
           !Window.Templates:
            Add new template Toolbars.
           !Window.c.toolbars, h.toolbars, MakeProto, MakeFile:
            New source module to handle the Toolbars dbox - modelled on the
             extent module.
           !Window.c.windowedit:
            windowmenu_cb(..):
             Calls toolbars_open_dbox(..) when User chooses "Toolbars...".
            windowedit_rename_window(..):
             Calls toolbars_update_dbox(..).
            windowedit_close_window(..):
             Calls toolbars_close_dbox(..).
           !Window.c.main:
            load_prototypes(..):
             Calls toolbars_load_prototypes(..).
            mouse_click(..):
             Calls toolbars_dbox_mouse_click(..).
            open_window_request(..):
             Calls toolbars_reopen_dbox(..).
            close_window_request(..):
             Calls toolbars_close_dbox(..).
            key_pressed(..):
             Calls toolbars_dbox_key_pressed(..).
           !Window.h.windowedit:
            Add new field "toolbarsdbox" to WindowObjRec.
           !Window.h.main:
            New registry type ToolbarsDbox.
           !Window.c.protocol:
            protocol_send_resed_object_name_request(..):
             Calls toolbars_drop_icon(..) to check if the destination is an
              interesting one.
            received_resed_object_name(..):
             Calls toolbars_object_drop(..) when object name received.
           !Window.c.toolbars, h.toolbars:
            New functions toolbars_object_drop(..) and toolbars_drop_icon(..)

21-Sep-94  !Window.Templates:
            New templates "MainProps" and "OtherProps" added.
           !Window.c.windowedit, !Window.Messages:
            Add new main menu entries "Main properties...", "Other
             properties..."; remove "Properties...".
           !Window.c.windowedit:
            windowmenu_cb(..):
             Calls props_open_main/otherdbox(..) when User chooses
              "Main/Other properties...".
            windowedit_rename_window(..):
             Calls props_update_main/other_dbox(..).
            windowedit_close_window(..):
             Calls props_close_main/other_dbox(..).
           !Window.c.main:
            mouse_click(..):
             Calls props_main/other_dbox_mouse_click(..).
            open_window_request(..):
             Calls props_reopen_main/other_dbox(..).
            close_window_request(..):
             Calls props_close_main/other_dbox(..).
            key_pressed(..):
             Calls props_main/other_dbox_key_pressed(..).
           !Window.h.windowedit:
            Replace "propsdbox" field in WindowObjRec by "mainpropsdbox" and
             "otherpropsdbox" fields.
           !Window.h.main:
            New registry types MainpropsDbox and OtherpropsDbox replace
             PropsDbox.
           !Window.c.protocol:
            protocol_send_resed_object_name_request(..):
             Calls props_main_drop_icon(..) to check if the destination is an
              interesting one.
            received_resed_object_name(..):
             Calls props_main_object_drop(..) when object name received.
           !Window.c.drag:
            drag_interactor(..):
             Calls props_main_gadget_drop(..) if a gadget is dropped into the
              main properties dbox.
           !Window.c.props, h.props:
            Split old functions into pairs of new ones as appropriate.

           !Window.c.props:
            props_update_main/other_dbox(..):
             If the window being edited is a toolbar, then only appropriate
              icons are unfaded.

           !Menu.c.drag:
            copy_to_tmp(..):
             Now clones "clickshow" and "submenushow" fields as well as the
              "text" and "helpmessage" fields!

           !ResEd.Templates, !Menu.Templates, !Misc.Templates,
           !Window.Templates:
            Checked Matt's tweaked templates and added these in instead.

22-Sep-94  !Window.c.resize:
            calculate_new_box_width(..):
             Now takes grid lock into account, so that a numberrange gadget
              whose display is being resized with Grid Lock on will only
              take sizes which are multiples of the grid spacing.
            resize_plot_boxes(..):
             Now calls calculate_new_bbox(..) with usegridlock = TRUE, so
              that the dotted rectangle locks to the grid as the user drags
              the mouse when grid lock is on.

           !Window.c.windowedit:
            plot_numberrange_special_ear(..):
             Only does so if the numberrnage has both a numerical display
              *and* a slider.
           !Window.c.gadget:
            gadget_nr_init(..):
             Initialises numberrange display width icon.
            gadget_nr_apply(..):
             Interprets numberrange display width icon.
            gadget_nr_numerical(..):
            gadget_nr_slider(..):
             Fade/unfade numberrange display width icon as appropriate.
           !Window.Messages:
            New error NrDispWidth.
           !Window.c.resize:
            resize_selected_gadgets(..):
             Updates numberrange properties dbox when width changes by
              calling gadget_nr_update_display_width(..).
           !Window.c.gadget, h.gadget:
            gadget_nr_update_display_width(..):
             New function which updates display width field.
           !Window.c.gadgdefs:
            Add DISPLAY_WIDTH field to numberrange definition, so that the
             field inside the icon is always set/retrieved, even if the icon
             is shaded.

           !Window.c.gadgdefs:
            Add GROUP field to radio button definition.
           !Window.c.gadget, h.gadget:
            gadget_rb_update_group(..):
             New function to update group number in dbox.
            gadget_rb_make_radio_group(..):
             Calls gadget_rb_update_group(..).
           !Window.c.drag:
            finalise_drag(..):
             Calls gadget_rb_update_group(..) instead of changing a radio
              button's group number directly.

           !Window.Templates:
            Added Matt's new "extent" template.
            Range values for numberrange and slider templates now have icons
             which allow values up to 11 characters long.

           !Window.c.gadget:
            gadget_sl_apply(..):
             If the slider's orientation has changed, it is also rotated
              through 90 degrees.

           !Window.c.move:
            move_interactor(..):
             Updates dotted box in grid steps if grid is locked.

           !Window.c.gadget:
            gadget_note_new_default_action_button(..):
             Now reduces the size of any previous default action button, and
              increases the size of the any new one.
            gadget_ab_default(..):
             Reduces the size of any action button which is made non-default.

           !Window.Messages:
            New message tags defined for the Select sub-menu, and for new
             error messages.
           !Window.c.windowedit:
            create_menu(..):
             Creates the "select" submenu.
            prepare_menu(..):
             Shades/unshades entries in the select menu as appropriate.
23-Sep-94   windowmenu_cb(..):
             Calls appropriate routine according to entry chosen from select
              sub-menu.
            select_linked_writable(..):
             Implements "Next/Previous writable".
            select_default_focus(..):
             Implements "Default writable".
            select_special_action(..):
             Implements "Default/Cancel action".

           !Window/!Menu/!Misc/shell.MakeFile/MakeProto
            !Help added to list of files to install, and install rule amended
             accordingly.

           common.h.resed: - version number updated to 0.15.
           !Help files updated for ResEd and the three CSEs.
           Set DEBUG = 0 in common.h.debug and DBMALLOC = 0 in
            common.h.dbmalloc - and recompile for release.
********   Version 0.15 (23-Sep-94) released on aquarius.$.release   ********
********   SrcFiler version 021 made from version 0.15 (23-Sep-94)   ********
           common.h.resed: - version number updated to 0L16.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

           !Menu.Templates:
            menudbox - "Deliver event before showing" rather than "Deliver
             event when showing". (This change was rather cheekily
             retrofitted to the 0.15 release by replacing the Templates file,
             although it is not yet on the SrcFiler.)

26-Sep-94  !Window.h.main:
            Remove registry code KeyDbox - not needed.
           !Window.Templates:
            Replace KeyParent and KeyPane by the new templates, and delete
             KeyEdit.
           !Window.c.keycuts:
            Restructure and rewrite to work with new (single) dbox.
           !Window.c.protocol:
            protocol_send_resed_object_name_request(..):
             Calls keycuts_drop_icon(..).
            received_resed_object_name(..):
             Calls keycuts_object_drop(..).
           !Window.c.keycuts, h.keycuts:
            New functions keycuts_drop_icon(..) and keycuts_object_drop(..)
             to handle drag'n'drop of objects onto the "Show object" fields.
           !Window.Templates:
            KeyParent - all writable icons changed to write/click/drag icons
             so that mouse-clicks get sent to the application; this makes it
             possible to de-activate the special "Key" icon whenever the user
             clicks elsewhere on the dbox.

27-Sep-94  !Window.Templates:
            KeyParent - Key icon made wider.
           !Window.c.keycuts:
            update_keycuts(..):
             Resets the KEY field from the CODE field.
            plot_keycut(..) replaced by get_keycut(..).
            keycuts_redraw_pane(..):
             Will use Wimp_TextOp when appropriate.
            keycuts_load_prototypes(..):
             Initialises 'usetextop' according to Wimp version, and chooses
              an appropriate line height.
           common.h.swicall:
            Added #define for Wimp_TextOp.

           common.h.resed: - version number updated to 0.16.
           !Help files updated for ResEd and the three CSEs.
           Set DEBUG = 0 in common.h.debug and DBMALLOC = 0 in
            common.h.dbmalloc - and recompile for release.
********   Version 0.16 (27-Sep-94) released on aquarius.$.release   ********
********   SrcFiler version 022 made from version 0.16 (27-Sep-94)   ********
           common.h.resed: - version number updated to 0L17.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

30-Sep-94  common.c.wimp:
            wimp_toggle_pattern(..):
             New function which inverts the dot-dash pattern used to draw the
              drag box.
            wimp_plot_eor_box(..):
             Uses the predefined dot-dash pattern which can be inverted by
              calling the function above.
           !Window.c.move:
            move_interactor(..):
             Calls wimp_toggle_pattern(..) between removing one drag box and
              plotting the next.
             Repeatedly replots the drag box when NULL events arrive, even if
              it has not moved, so that it appears to circulate.
           !Window.c.resize:
            resize_interactor(..):
             Repeatedly replots the drag boxes when NULL events arrive,
              calling wimp_toggle_pattern() to give illusion of circulation.
           !Window.c.drag:
            drag_start(..):
            drag_interactor(..):
             Substantial modifications made so that a type 5 (normal) drag
              is used only when the mouse is outside a WindowEdit window,
              and that within such windows the box is plotted explicitly
              as in a move.
           common.c.wimp:
            wimp_toggle_pattern(..):
             Now cycles around 8 patterns like the Wimp does.

03-Oct-94  common.c.wimp, h.wimp:
            Rename wimp_toggle_pattern as wimp_cycle_pattern.
            New function wimp_cycle_eor_box(..) to "rotate" a static dragbox.
           !Window.c.move:
            move_interactor(..) calls wimp_cycle_eor_box(..) when the box has
             not moved.
           !Window.c.move, c.resize, c.drag:
            Replace calls to wimp_toggle_pattern(..) by calls to
             wimp_cycle_pattern(..).
            move_start(..) - timeout set to 2 centiseconds, so that the drag
             box looks just like the one the Wimp generates.
           common.c.wimp, h.wimp:
            Functions wimp_start_rotate_box(..) and wimp_end_rotate_box(..)
             replace wimp_cycle_eor_box(..), thus making it possible for more
             than one box to be rotated at once.
           !Window.c.move:
            Corresponding changes made to move_interactor(..).
           !Window.c.resize:
            And to resize_interactor(..).
            resize_start(..):
             Time out set to 2.
           !Window.c.lassoo:
            lassoo_start(..):
             Time out set to 2.
            lassoo_interactor(..):
             Includes code to rotate a stationary lassoo.
           !Window.c.drag:
            drag_start(..):
             Time out set to 2.
            drag_interactor(..):
             Includes code to rotate a stationary drag box.

           !Window.c.gui, !Misc.c.gui, !Menu.c.gui:
            gui_get/put_opt/mand_event(..) - now use 0 as default event
             value instead of -1!
           !Menu.c.protocol:
            received_resed_object_load(..):
             Initialises showevent and hideevent fields to 0, not -1, when
              converting version 101 to 102 menus.
           !Window.c.protocol:
            received_resed_object_load(..):
             Initialises showevent and hideevent fields to 0, not -1, when
              converting version 101 to 102 windows.

           !Window.Templates, !ResEd.Templates, !Misc.Templates:
            All display icons are now marked as "Filled" again, following
             Style Council decision.

04-Oct-94  !Window.c.move:
            move_interactor(..):
             Action when autoscrolling changed to give smoother appearance.
           !Window.c.lassoo:
            lassoo_interactor(..):
             Improved action when auto-scrolling.
           !Window.c.resize:
            resize_interactor(..):
             Improved action when autoscrolling.
           !Window.c.drag:
            drag_interactor(..):
             Improved action when auto-scrolling.
           !Menu.c.lassoo:
            lassoo_interactor(..):
             Drag box rotates, and improved action when auto-scrolling.
           shell.c.document:
            lassoo_interactor(..):
             Rotates, and improved action when auto-scrolling.
           common.c.dragdrop:
            perhaps_scroll(..):
             Scroll offsets are checked to make sure that scrolling will
              actually occur: that is, that the OPEN_WINDOW_REQUEST which
              causes Wimp_OpenWindow to be called will then actually generate
              a REDRAW_REQUEST.
             The distance moved is also forced to be a multiple of 4 OS
              units.

           !Window.c.windowedit, h.windowedit:
           !Menu.c.menuedit, h.menuedit:
           shell.c.doument:
            Remove unwanted redraw routines.

           !Window.c.keycuts:
            Removed references to IF_FILLED bit for the KEY icon.

           !Window.c.lassoo:
           !Menu.c.lassoo:
           !Menu.c.drag:
           shell.c.document:
            Cursor-key nudge code added to interactor.

           !Window.Palette:
            Checked again and minor adjustments made.

           !Window.c.windowedit:
            windowedit_redraw_window(..):
             Errors from Window_PlotGadget are ignored unless the code is
              compiled with DEBUG set.

           !ResEd.!Run, !ResEd.!Boot:
            Now correctly set up aliases.

           shell.c.document:
            rename_interactor(..):
             Leaves name available for re-edit after an error.

           shell.c.document, h.document:
            document_create(..):
             No longer allows empty document windows to be opened over the
              icon bar.
05-Oct-94  document_add_resource(..):
             Now has a new parameter - Bool isnew - which, if set, causes
              the function to make sure that the window does not obscure
              the icon bar as it gets larger.
            static int lasty - is now declared at the top of the file, since
             it is used both by document_create(..) and by
             document_add_resource(..).
            document_load(..):
            document_load_file(..):
             Also have extra parameter 'isnew'.
            All calls of changed procedures now have extra parameter.
           shell.c.main:
            All calls of changed procedures now have extra parameter.

           !Window.c.windowedit:
            windowedit_open_palette(..):
           !Menu.c.menuedit:
            menuedit_open_palette(..):
             Forces component ids of gadgets in the palette to be -1, not 0.
           !Window.c.drag:
            disambiguate(..):
           !Menu.c.drag:
            disambiguate(..):
             Always assigns a new componentID to gadgets with -1.

           !Window.h.windowedit:
            New field 'usecount' for BodyDefRec's.
           !Window.c.gadgdefs, h.gadgdefs:
            New 'usecount' field initialised in all gadget definitions.
            New prototype definition 'unkgadgetdef' added for unknown gadget
             types.
           !Window.h.format:
            Added GADGET_UNKNOWN_TYPE = -1.
           !Window.c.gadget:
            gadget_copy(..):
             Increments usecount for unknown gadgets.
            gadget_free(..):
             Decrements usecount for unknown gadgets, and frees the refdef
              array and GadgetDefRec when the count reaches zero.
            gadget_load(..):
             Assigns unkgadgetdef as the definition of an unknown gadget type
              and calls a new function create_body_description(..) to
              allocate a refdef's array and fill in the BodyDefRec.
             Two new parameters - offset and reloctable - added.
           !Window.c.windowedit:
            windowedit_load(..):
             Passes the offset of the gadget, and the address of its window
              object template's relocation table, to gadget_load(..).
           !Window.Messages:
            New message token "BadUnkGadReloc".
           !Window.c.main:
            load_prototypes(..): now loads unkgadgetdef prototype as well.
           !Window.c.windowedit:
            windowedit_redraw_window(..):
             The *first* error that occurs during a redraw loop is remembered
              and returned at the end - if DEBUG is on.

           Some tidying of template and palette positioning.

           !Window.c.windowedit:
            windowedit_key_pressed(..):
             Allows only ^A and ^Z on palette windows.

           !Menu.c.windowedit:
            menuedit_key_pressed(..):
             Allows only ^A and ^Z on palette windows.

           shell.c.document:
            document_key_pressed(..):
             Allows only ^A and ^Z on palette windows.

06-Oct-94  !Window.c.grid:
            grid_interactor(..):
             Responds correctly to SHFT/RETURN (but still can't get
              SHFT/CANCEL - I think the Wimp prevents this).

           !Menu.!Run, !Misc.!Run, !Window.!Run, !ResEd.!Run:
            Reasonable wimpslot sizes set.

           common.h.resed: - version number updated to 0.17.
           !Help files updated for ResEd and the three CSEs.
           Set DEBUG = 0 in common.h.debug and DBMALLOC = 0 in
            common.h.dbmalloc - and recompile for release.
********   Version 0.17 (06-Oct-94) released on aquarius.$.release   ********
********                       BETA Release                          ********
********   SrcFiler version 023 made from version 0.17 (06-Oct-94)   ********
           common.h.resed: - version number updated to 0L18.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

           !Window.c.coords:
            coords_interactor(..):
             Responds correctly to SHFT/RETURN.

           shell.c.rename:
            rename_interactor(..):
           shell.c.copy:
            copy_interactor(..):
           shell.c.objflags:
            objflags_interactor(..):
           common.c.saveas:
            saveas_interactor(..):
             Responds to ADJ/CANCEL and SHFT/RET correctly.
             No longer takes two clicks to remove error box after ADJ/OK with
              incomplete path-name.

           !Misc.c.object:
            colourpicker_interactor(..):
             Remove call to ColourPicker_CloseDialogue when cancelling the
              interactor.
             Remove code to handle Message_ColourPickerCloseDialogueRequests
              since these should never arise from transient colour pickers.
            object_cd_colour_popup(..):
             Use interactor_install(..) instead of interactor_push(..) to
              install the colour picker interactor.

07-Oct-94  common.h.resed: - version number updated to 0.18.
           !Help files updated for ResEd and the three CSEs.
           Set DEBUG = 0 in common.h.debug and DBMALLOC = 0 in
            common.h.dbmalloc - and recompile for release.
********   Version 0.18 (07-Oct-94) released on aquarius.$.release   ********
********                       BETA Release  (really!)               ********
********   SrcFiler version 024 made from version 0.18 (07-Oct-94)   ********
           common.h.resed: - version number updated to 0L19.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

           !Window.c.help, h.help, c.main, MakeFile, MakeProto:
            help_message(..):
             Moved from c.main to a module of its own, and recoded to provide
              the skeleton of the new help system.
           !Window.c.main:
            start_wimp(..):
             Requires version 310, and currently asks for all messages.

           !Misc.c.objdefs:
            ACT_RADIO click definitions added for the Iconbar dbox radio
             buttons, so that ADJ can no longer be used to switch *all*
             buttons in a group off.

           !Window.c.windowedit, h.windowedit:
            windowedit_help_text(..):
             Prototype function added.

10-Oct-94  common.c.wimp, h.wimp:
            New version of wimp_read_icon_name(..) written, which copes with
             the "multi-icon" items labelled boxes and adjuster arrow pairs.
             This version also takes different parameters.
           !Misc.c.main:
           !Menu.c.main:
           shell.c.main:
            help_message(..):
             Call to wimp_read_icon_name(..) changed appropriately.
           !Window.c.coords:
            coords_load_prototypes(..):
           !Window.c.grid:
            grid_load_prototypes(..):
             Now register the grid and coords dboxes.
           !Window.h.main:
            Removed #define for AlignDbox.
           common.c.menu, h.menu:
            New functions menu_register(..) and menu_lookup_type(..) added.
           !Window.Messages:
            New token "TooManyMenus" added.
           !Window.c.windowedit:
            create_menu(..):
           !Window.c.colours:
            colours_load_prototypes(..):
           !Window.c.props:
            props_load_prototypes(..):
             Registers the new menus as well.
11-Oct-94  !Window.c.windowedit(..):
            windowedit_help_text(..) - completed.
           !Window.Messages:
            Tokens and messages added for editing and palette windows.

           !Misc.c.help, h.help, c.main, MakeFile, MakeProto:
            help_message(..):
             Copied from !Window.c.help, amended as necessary for Misc use.
           !Misc.c.main:
            start_wimp(..):
             Requires version 310, and currently asks for all messages.
           !Misc.c.object:
            object_fisa_create_menu(..):
             Registers the transient filetypewin window.
           !Misc.h.main:
            Add #define for FileTypeDbox, and for menu types.
           !Misc.Messages:
            New token "TooManyMenus" added.
           !Misc.c.object:
            object_fisa_create_menu(..):
            object_ib_create_menu(..):
            object_pi_create_menu(..):
           !Misc.c.colours:
            colours_create_menus(..):
             Code added to register menus after creation.
           common.c.menu, h.menu:
            menu_deregister(..):
             New function to deregister a menu.
           !Misc.c.object:
            object_fmfd_font_popup(..):
             De-registers any preceding font menu, and registers the new one.

           !Menu.c.help, h.help, c.main, MakeFile, MakeProto:
            help_message(..):
             Copied from !Window.c.help, amended as necessary for Menu use.
           !Menu.c.main:
            start_wimp(..):
             Requires version 310, and currently asks for all messages.
           !Menu.c.menuedit, h.menuedit:
            menuedit_help_text(..):
             Copied from !Window.c.windowedit, and amended as appropriate for
              !Menu use.
           !Menu.h.main:
            Added #define for menu type.
           !Menu.Messages:
            New token "TooManyMenus" added.
           !Menu.c.menuedit:
            create_menu(..):
             Registers the main menu after creation.
           !Menu.Messages:
            Tokens and messages added for editing and palette windows.

12-Oct-94  shell.c.help, h.help, c.main, MakeFile, MakeProto:
            help_message(..):
             Copied from !Menu.c.help, amended as necessary for shell use.
           shell.c.main:
            start_wimp(..):
             Requires version 310, and currently asks for all messages.
           shell.c.document, h.document:
            document_help_text(..):
             Copied from !Window.c.windowedit, and amended as appropriate for
              shell use.
           shell.h.shell:
            Added #define's for menu types, and for all dbox types.
           !ResEd.Messages:
            New token "TooManyMenus" added.
           shell.c.document:
            document_close_window(..):
           shell.c.main:
            warn_exit(..):
           shell.c.copy:
            copy_load_prototypes(..):
           shell.c.rename:
            rename_load_prototypes(..):
             Registers each dbox after creation.
           common.c.saveas, h.saveas:
            saveas_load_prototypes(..):
             Now has extra parameter to which, if not null, the created
              window's handle is assigned.
           shell.c.main:
            load_prototypes(..):
             Registers the SaveAs dbox after creation.
           shell.c.document:
            document_load_prototypes(..):
           shell.c.main:
            create_icon_menu(..):
             Registers the various menus after creation.
           !ResEd.Messages:
            Tokens and messages added for document and palette windows.

           shell...
            Rename h.shell as h.main for consistency with other modules.

           !ResEd.Templates:
            Names given to the icons in the SaveAs template.

           shell.c.help, h.help, c.document:
           !Menu.c.help, h.help, c.menuedit:
           !Window.c.help, h.help, c.windowedit:
           !Misc.c.help, h.help:
            New function help_lookup_token(..) added and used (to simplify
             and shorten the code).
            New #define MAX_HELP_TEXT defined.

13-Oct-94  !Window.Templates:
            Removed scroll bar from Extent template.

           !ResEd.Messages:
           shell.c.document:
            document_load_prototypes(..):
             Add ^O as shortcut for Object flags menu entry.
            document_key_pressed(..):
             Calls objflags_open(..) for ^O if a selection is present.
           shell.c.objflags:
            objflags_open(..):
             Opens dbox in previous position if position given as NULL.
            objflags_interactor(..):
             Explicitly closes dbox if it was opened as a menu (rather than
              as a submenu).

14-Oct-94  !Window.Messages:
            Add keyboard shortcuts ^T, ^L, �G, �C, �R.
           !Window.c.windowedit:
            create_menu(..):
             Define new keyboard shortcuts.
            windowedit_key_pressed(..):
             Processes new keyboard shortcuts.
           !Window.c.gadget:
            gadget_link_writables(..):
             Now works even if there is no selection when called.
           !Window.Templates:
            Position Coords and Grid templates centrally.
           !Window.c.grid:
            Systematic modifications to allow the grid dbox to be displayed
             directly by keyboard shortcut as well as indirectly by menu
             choice.
           !Window.c.coords:
            Systematic modifications to allow the coordinates dbox to be
             displayed directly by keyboard shortcut as well as indirectly
             by menu choice.

           !Window.h.windowedit:
            Add new field 'menuicon' to ColourClickRecs and ButtonClickRecs.
           !Window.c.gadgdefs:
            Appropriate values added to ColourClick and ButtonClick Recs.
           !Window.c.gadget:
            gadget_dbox_mouse_click(..):
             'menuicon' passed instead of 'position' to colours_choose(..)
              and props_button_choose(..).
           !Window.c.colours:
            colours_dbox_mouse_click(..):
             'menuicon' passed instead of 'position' to colours_choose(..).
           !Window.c.props:
            props_other_dbox_mouse_click(..):
             Passes an icon instead of a position to props_button_choose(..).
           !Windows.c.colours, h.colours:
            colours_choose(..):
             Positions menu relative to 'menuicon' instead of at specific
              location.
           !Windows.c.props, h.props:
            props_button_choose(..):
             Positions menu relative to 'menuicon' instead of at specific
              location.
           !Misc.c.colours, h.colours:
            New version of colours_choose(..) as above.
           !Misc.c.object:
            object_cm_colour(..):
             Amend call to colours_choose(..) appropriately.
            where_to_popup(..):
             New function that calculates where to pop up a menu.
            object_fisa_filetype_popup(..):
            object_fmfd_font_popup(..):
             Extra parameter 'menuicon', used to determine where to place the
              menu.
            object_ib_position_popup(..):
            object_pi_licence_popup(..):
             Use where_to_popup(..) to determine where to display the menu.
            object_fi_filetype_popup(..):
            object_sa_filetype_popup(..):
            object_fd_initial_popup(..):
            object_fm_ticked_popup(..):
             Now pass extra parameter to the relevant menu-popup function.
            object_cd_colour_popup(..):
             Now positions Colour Picker as transient popped-up object.

           common.h.resed: - version number updated to 0.19.
           !Help files updated for ResEd and the three CSEs.
           Set DEBUG = 0 in common.h.debug and DBMALLOC = 0 in
            common.h.dbmalloc - and recompile for release.
********   Version 0.19 (14-Oct-94) released on aquarius.$.release   ********
********   SrcFiler version 025 made from version 0.19 (14-Oct-94)   ********
           common.h.resed: - version number updated to 0L20.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

           !Window.c.windowedit:
            windowedit_save_object_to_memory(..):
             Sets "behind" = -2 if the window has the "backdrop" bit set.

           !Window.c.windowedit:
            click_in_gadget(..):
             No longer erroneously detects clicks on internal resize ears
              that are not present.

17-Oct-94  !Window.c.windowedit:
            prepare_menu(..):
             "Toolbars..." entry shaded iff window is a toolbar.
            windowedit_key_pressed(..):
             ^T only raises Toolbars dialogue if the window is not a toolbar.
             Cancels any foreground interaction in progress (eg menu on
              display).
             Gives error message when:
              ^R - and selection is not entirely of radio buttons
              ^L - and selection does not include a writable
             SHFT/R works only if exactly one radio button is selected.
            prepare_menu(..):
             "Select radio group" only unfaded if exactly one radio button is
              selected.
           !Window.c.gadget:
            gadget_link_writables(..):
             Returns error if current selection is empty or does not include
              a writable.
           !Window.Messages:
            New error messages Rbsonly, Needwritable, Onerb.
           !Window.c.drag:
            drag_interactor(..):
           !Window.c.lassoo:
            lassoo_interactor(..):
           !Window.c.move:
            move_interactor(..):
           !Window.c.resize:
            resize_interactor(..):
           !Window.c.winddrag:
            winddrag_interactor(..):
             KEY_PRESSED events are always 'consumed' - unless it's the ESC
              key; this means that they have higher priority than arbitrary
              keyboard shortcuts.

           !Menu.c.menuedit:
            menuedit_key_pressed(..):
           shell.c.document:
            document_key_pressed(..):
             Call interactor_cancel(..) to cancel any foreground interaction
              in progress.
           !Menu.c.drag:
            drag_interactor(..):
           !Menu.c.lassoo:
            lassoo_interactor(..):
           shell.c.document:
            lassoo_interactor(..):
           common.c.dragdrop:
            dd_interactor(..):
             All KEY_PRESSED events - other than ESC - are now consumed.

           !Window.c.gadgdefs:
            Special function defined for applying a WimpIcon dbox.
           !Window.c.gadget, h.gadget:
            gadget_wi_apply(..):
             New function - checks ESG < 32.
           !Window.Messages:
            New message ESGRange.

18-Oct-94  common.c.dbox, h.dbox:
            dbox_set_caret_to(..):
             Now ensures that the caret is never placed/left in a faded icon;
              the next unfaded writable - if any - is used instead.
            dbox_place_caret(..):
             New function which places the caret as requested.
           !Window.c.gadget:
            gadget_dbox_mouse_click(..):
             Calls dbox_place_caret(..) as appropriate when user clicks on
              option buttons which unfade writable icons.
             The call to dbox_set_caret_to(..) is now upon exit instead of
              entry, so that the caret is never left in a faded icon.
            gadget_dbox_key_pressed(..):
             Small changes to handle caret properly.
            gadget_nr_slider(..):
            gadget_nr_numerical(..):
            gadget_nr_writable(..):
            gadget_ss_numerical(..):
            gadget_ss_writable(..):
             Make appropriate calls to ensure caret is sensibly positioned.
           !Window.c.gui:
            gui_put_allowable(..):
             Now gets caret position correct.
           !Window.c.coords:
            coords_interactor(..):
           !Window.c.toolbars:
            toolbars_dbox_key_pressed(..):
            toolbars_dbox_mouse_click(..):
           !Window.c.props:
            props_main_dbox_key_pressed(..):
            props_other_dbox_key_pressed(..):
            props_main_dbox_mouse_click(..):
            props_other_dbox_mouse_click(..):
             Places caret when option switched on.
             Ensures caret is not left in faded icon.
           !Misc.c.object:
            object_dbox_mouse_click(..):
            object_dbox_key_pressed(..):
             Changes analogous to those for gadget_..(..).
            object_pd_pagerange(..):
             Places caret in "First" field when this is unfaded.
           !Misc.c.objdefs:
            Arrange for caret to go into "first" icon when "range" selected
             in a PrintDbox.
            Make "Sprite name" the first writable for Iconbar objects.
           !Menu.c.props:
            set_caret_to(..):
             This local function removed - use dbox_set_caret_to(..) instead.
            props_menu_dbox_key_pressed(..):
            props_entry_dbox_key_pressed(..):
            props_menu_dbox_mouse_click(..):
            props_entry_dbox_mouse_click(..):
             Places caret when option switched on.
             Ensures caret is not left in faded icon.

           !Window.c.extent:
            apply_dbox(..):
             Now forces minimum width/height to be at most the extent size.

           !Window.h.windowedit:
            New field minsize in GadgetDefRec.
           !Window.c.gadgdefs:
            Values put in for minsize.
           !Window.c.resize:
            calculate_new_bbox(..):
             Takes account of minimum size constraints.
19-Oct-94  !Window.c.coords:
            execute_coords(..):
             Checks gadget minimum size constraints.
           !Window.Messages:
            New errors for minimum size violations.

           !Window.c.drag:
            finalise_drag(..):
             Code changed to minimise gadget re-ordering:
              Move within a window treated specially.
              Gadgets added to a window are added at the end.
           !Misc.c.gui:
           !Menu.c.gui:
             Ensures that length fields are always long enough for the
              corresponding string.
           !Window.c.gui, h.gui:
            gui_load_len_field(..):
             Updates any length value that is not large enough.
           !Window.c.gadget, c.windowedit:
            gadget_load(..):
            windowedit_load(..):
             Calls to gui_load_len_field(..) amended accordingly.
           shell.h.document:
            New fields for ResourceRec's: importing, original. These are to
             make it possible to send an object with modified messages to
             its CSE, and then immediately retrieve it - in order to update
             any length fields associated with changed messages. 'importing'
             is TRUE whilst this is happening, and 'original' contains the
             previous version of the object in case something goes wrong.
           shell.c.genmsgs:
            genmsgs_import_file (..):
           shell.c.protocol:
             New protocol sequence implemented so that objects into which new
              messages have been imported are sent to their CSEs to be
              validated, and then grabbed back if necessary.
           !Misc.c.protocol:
            protocol_incoming_message(..):
             Now handles requests from the shell to send data.
            received_resed_object_send(..):
             New function to handle shell request for data - only used after
              messages have been changed.
           !Window.c.windowedit:
            windowedit_load(..):
             Does not open any window created as a result of a force-load of
              a window not previously known about. This avoids the "flicker"
              when messages are imported.
           !Misc.c.object, h.object:
            object_open_dbox(..):
             Extra parameter added to determine whether the window is opened
              or not.
           !Misc.c.protocol:
            received_resed_object_load(..):
           !Misc.c.objedit:
            objedit_load(..):
             Extra parameter added to calls of above function.
           !Menu.c.menuedit:
            menuedit_load(..):
             Does not open any window created as a result of a force-load of
              a menu not previously known about. This avoids the "flicker"
              when messages are imported.
20-Oct-94  !Misc.c.protocol:
           !Window.c.protocol:
           !Menu.c.protocol:
            received_resed_object_send(..):
             If flag bit 0 is set, the shell is asking that the object be
              deleted after it has been sent - so set 'pendingclose' TRUE.
           shell.c.protocol:
            received_resed_object_loaded(..):
             Sets this flag when requesting data for an object that has just
              been sent out with new messages - and is not currently being
              edited.
            received_resed_object_sending(..):
             No longer needs to send RESED_OBJECT_DELETED message after
              retrieving data from the CSE.
           !Misc.c.objedit:
            objedit_load(..):
             Preserves position of dbox when closing prior to reopening.
           !Misc.c.object:
            object_open_dbox(..):
             No longer explicitly sets "behind" to -1 when opening a newly
              created dbox.
           !ResEd.Messages:
            New message for export header.
           shell.c.genmsgs:
            write_messages(..):
             Outputs header for messages file.
            genmsgs_import_file(..):
             Checks header before processing file.
             Does not rebuild a resource if no messages have altered.

           shell.h.main:
            New window registry code ImpWarnWin.
           shell.c.genmsgs, h.genmsgs:
            genmsgs_load_prototypes(..):
             New function to load ImpWarn template.
            importwarn_interactor(..):
             New function to handle interaction with the ImpWarn dbox.
            genmsgs_import_file(..):
             Checks the file, and then raises the import warning dbox.
            import_messages(..):
             New function to complete import processing.
           shell.c.main:
            load_prototypes(..):
             Calls genmsgs_load_prototypes(..).
           !ResEd.Templates:
            New template ImpWarn.

           !Window.c.windowedit:
            windowedit_load(..):
             Now preserves grid settings when reloading a window.

           shell.c.document:
            select_bounded_icons(..):
             New parameter 'entirely' added, which determines whether icons
              partly inside the given bounding box are selected or not. Calls
              to this function have been approriately updated.

           shell.c.document:
            document_free_all(..):
             Now just closes the palette, instead of destroying it: this
              makes it possible to recreate it if a shut-down sequence
              accepted by ResEd is refused by some other application.

           shell.c.document:
            document_close_window(..):
             Now responds correctly to SHFT/ADJ click on close icon - that
              is, it no longer tries to close the document window as well as
              opening the parent directory.

           shell.c.main:
            iconsprites(..):
             Now returns boolean to say whether sprites were loaded or not.
            load_any_sprites(..):
             New function to load any Sprites[<nn>] file inside a given
              directory.
            dataload_message(..):
            dataopen_message(..):
            main(..):
             Calls load_any_sprites(..) after loading a resource file.

           shell.c.main, h.main:
            main(..):
             New flag 'privateflag' set TRUE iff the application is called
              with "-private" as its final argument.
           !ResEd.Templates:
            Copy and Rename writables given validation strings to restrict
             entry to alphanumerics and underlines; also the writable in
             DocProto used for icon names.
           shell.c.document:
            document_rename_resource(..):
            document_copy_resource(..):
             Takes account of "private" flag.
           !ResEd.Messages:
            New message "BadName".

21-Oct-94  shell.c.document:
            document_mouse_click(..):
             ADJ-drag now adds the clicked icon to any current selection and
              then drags as usual.
            document_close_window(..):
            issue_close_warning(..):
             The latter part of the first function is separated out to make
              the second function.
            start_drag(..):
            drag_callback(..):
            datasave_interactor(..):
             Detailed changes made so that information about whether the
              source document window is to be closed or not at the end of a
              drag is passed through. ADJ-drag now works as it should.

           !Window.Templates:
            Toolbars template - validation string corrected for ETL toolbars
             so that it include A-Z, rather than A-A!

           !Window.c.gui, h.gui:
            gui_put_colour(..):
             Now has an extra parameter 'realcolours' which is set TRUE if
              the value supplied is in the range 0-255 instead of 0-15,255.
           !Window.c.colours:
            colours_update_dbox(..):
             Shades out pop-up menu icons if realcolours are specified.
            coloursmenu_cb(..):
             Add realcolours = FALSE to gui_put_colour(..) calls.
           !Window.c.gadget:
            gadget_init_dbox(..):
             Add realcolours = FALSE to gui_put_colour(..) calls.
           !Window.c.colours:
            colours_load_prototypes(..):
            colours_open_dbox(..):
             Further changes to alter appearance and behaviour of ColoursDbox
              according to its use.
           !Window.Templates:
            Colours - updated appropriately.
           !Window.c.props:
            apply_other_dbox(..):
             If the value of the "realcolours" flag changes, any open Colours
              dbox is closed and reopened.
           !Window.c.colours, h.colours:
            colours_redesign_dbox(..):
             New function to close and then reopen the colours dbox.

           !Window.c.props:
            props_update_main_dbox(..):
             Greys out inappropriate title and flag options.
            props_main_dbox_mouse_click(..):
             Maintains greyedness of inappropriate title and flag options.

           !ResEd.!Run:
            RMEnsure's BorderUtil 0.05.
           !Menu.c.props:
            props_close_menu_dbox(..):
            props_close_entry_dbox(..):
           !Misc.c.object:
            object_close_dbox(..):
           !Window.c.colours:
            colours_close_dbox(..):
           !Window.c.extent:
            extent_close_dbox(..):
           !Window.c.gadget:
            gadget_close_dbox(..):
           !Window.c.keycuts:
            keycuts_close_dbox(..):
           !Window.c.props:
            props_close_main_dbox(..):
            props_close_other_dbox(..):
           !Window.c.toolbars:
            toolbars_close_dbox(..):
             New BorderUtils servicecall included.

           !Menu.c.props:
            props_close_menu_dbox(..):
            props_close_entry_dbox(..):
             Now deregister the window as well.

           !Window.c.keycuts:
            update_keycuts(..):
             Ensures key codes are less than &200.
            code_to_keyid(..):
             No longer incorrectly translates, eg, &1ff to &1cf.
           !Window.Messages:
            New message "Badkeycode".

24-Oct-94  common.c.dbox:
            dbox_setstring(..):
            dbox_setbutton(..):
            dbox_iconflag(..):
             These functions now call Wimp_SetIconState only if the state or
              content of the icon has changed.

           !Window.c.gui:
            gui_put_allowable(..):
             No longer uses icon buffer as workspace - thus removing
              irritating "flicker".

           common.c.wimp, h.wimp:
            New structure WindowOutlineRec.
            wimp_read_window_constraints(..):
             New function to determine in which directions windows may be
              dragged off screen.
           !Window.c.winddrag:
            Re-organised so that move and resize drags have separate starts
             and interactors.
            winddrag_move_start(..):
             Constrains mouse position so that there is no need to check
              during the drag.
            winddrag_move_interactor(..):
             Simplified as a result of the above change. No more "pointer
              bounce".
            winddrag_resize_start(..):
            winddrag_resize_interactor(..):
             Similar changes ensure mouse pointer does not leave screen or
              window during resize, and does not "bounce".
            winddrag_resize/move_interactor(..):
             Recombined into a single interactor.

           !Window.Templates:
            Draggable:
             Labels for draggable type made more comprehensible.
             New option buttons for drop shadow and dithered.
           !Window.h.format:
            New flags DRAGGABLE_HASDROPSHADOW, DRAGGABLE_NOTDITHERED added.
           !Window.c.gadgdefs:
            Extend definition of Draggables to include the two new flags.
           !ResEd.!Run:
            RMEnsure's Window 0.19.

           shell.c.document:
            datasave_interactor(..):
             DATA_LOAD_ACK case no longer runs into RAM_FETCH case - fixes
              buglet introduced above ...

           !Misc.c.object:
            tick_font_menu_path(..):
             New function to re-tick a font menu.
            fontmenu_cb(..):
             Calls above function when necessary.

           !Misc.c.object:
            object_fisa_filetype_popup(..):
             Now ticks "Other" if the filetype is not in the list.

           shell.c.genmsgs:
            write_messages(..):
            genmsgs_import_file(..):
             Header line for export file now includes proper version number.

           !Window.Palette:
            Draggable prototype has drop shadow and dithering on.
            Radio button prototype is selected.

25-Oct-94  !Window.c.gadget:
            gadget_nr_apply(..):
             Checks to see that the numberrange has at least one of a slider,
              display or adjusters.
           !Window.Messages:
            New error message "EmptyNR".

           shell.MakeFile, MakeProto:
           !Menu.MakeFile, MakeProto:
           !Window.MakeFile, MakeProto:
           !Misc.MakeFile, MakeProto:
            Now squeeze's !RunImage.

           !Window.Templates:
            Stringset and Numberrange templates "squeezed" so that they now
             just fit onto a mode 27 screen.

           !Misc.Templates:
            SaveAs, FileInfo "filetype" fields extended so as to be able to
             hold "directory" and "application" filetypes.
           !Misc.c.gui:
            gui_put_filetype(..):
            gui_get_filetype(..):
            gui_put_filetype_string(..):
            gui_get_filetype_string(..):
             Various changes to cope with &1000 and &2000 pseudo-types.
           !Misc.c.object:
            redisplay_filetype_stuff(..):
            show_filetypewin(..):
            object_fisa_filetype_popup(..):
             char type[12] instead of char type[9] to allow for new special
              filetypes.
           !Misc.Templates:
            Filetype name field increased in length to 12.

           common.h.resed: - version number updated to 0.20.
           !Help files updated for ResEd and the three CSEs.
           Set DEBUG = 0 in common.h.debug and DBMALLOC = 0 in
            common.h.dbmalloc - and recompile for release.
********   Version 0.20 (25-Oct-94) released on aquarius.$.release   ********
********   SrcFiler version 026 made from version 0.20 (25-Oct-94)   ********
           common.h.resed: - version number updated to 0L21.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

           !Menu.c.menuedit:
            Add #include "interactor.h".

10-Nov-94  common.h.newmsgs:
            Add description of RESED_KEYCUT_DETAILS message.
           !Window.c.keycuts:
            keycuts_pane_mouse_click(..):
             Code added for drag-select and improved for double-click; now
              sends KEYCUT_DETAILS message if user drags a keycut and drops
              it onto a window.
           !Menu.c.protocol:
            protocol_incoming_message(..):
             Calls received_resed_keycut_details(..) if a KEYCUT_DETAILS
              message arrives.
            received_resed_keycut_details(..):
             New function to process KEYCUT_DETAILS messages.
           !Menu.c.props, h.props:
            props_enter_keycut_details(..):
             New function to insert keyboard shortcut details into a menu
              entry dbox.

           !Misc.c.object:
            Various changes to the "licence type" handling functions for the
             ProgInfo dbox to allow a new licence type "public domain" = 0.

           !ResEd.!Run, !Menu.!Run, !Window.!Run, !Misc.!Run:
            Tidy up, and check modules required have been loaded.

11-Nov-94  !ResEd.Templates:
            DocProto: horizontal work area size increased; this allows the
             user to extend a document display beyond its "default" maximum
             width.

           common.c.wimp:
            ensure_null_terminator(..):
             New function.
            check_null_terminator(..):
             Now replaces validation string terminators where necessary, as
              well as icon text terminators.

           !Misc.!Palette:
            ProgInfo object now has no licence type initially.

           !Window.c.windowedit:
            windowedit_key_pressed(..):
           !Menu.c.menudedit:
            menuedit_key_pressed(..):
           shell.c.document:
            document_key_pressed(..):
             Only cancels foreground interaction if key was consumed.

           common.h.resed: - version number updated to 0.21.
           !Help files updated for ResEd and the three CSEs.
           !ResEd.!Run - module version numbers updated as necessary.
           Set DEBUG = 0 in common.h.debug and DBMALLOC = 0 in
            common.h.dbmalloc - and recompile for release.
********   Version 0.21 (11-Nov-94) released on aquarius.$.release   ********
********   SrcFiler version 027 made from version 0.21 (11-Nov-94)   ********
           common.h.resed: - version number updated to 0L22.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

           !Misc.c.object:
            compare_bodies(..):
            copy_body(..):
             New functions.
            object_apply_dbox(..):
             Takes a copy of object data before applying the dbox, and then
              compares afterwards to see if any change has been made.
            object_dbox_mouse_click(..):
            object_dbox_key_pressed(..):
             Now only send object details back to shell if the object has
              been modified.

           !Window.c.gadget:
            compare_gadgets(..):
             New function.
            gadget_apply_dbox(..):
             Takes a copy of a gadget before applying the dbox, and then
              compares afterwards to see if any change has been made.
14-Nov-94    Only redraw gadget and mark as "modified" if a change has been
              made.

           !Window.c.gadget:
            gadget_nr_init(..):
            gadget_nr_slider(..):
            gadget_nr_numerical(..):
            gadget_nr_display(..):
            gadget_nr_writable(..):
             Changes to ensure that the "display" and "writable" radio
              buttons are only greyed-out when there is neither a numerical
              display nor a slider; and when there is just a slider, these
              buttons are available, but "before" and "after" etc. are not.

15-Nov-94  !Window.c.windowedit:
            windowedit_reopen_window(..):
             Only notes modification if the visarea or scrolloffset is
              actually changed.
            windowedit_raise_window(..):
             Notes modification if the window moves.
           !Window.c.winddrag:
            winddrag_interactor(..):
            winddrag_move_start(..):
            winddrag_resize_start(..):
             The original position of the window is recorded in the closure
              before starting the drag, and is compared with the final
              position at the end of the drag; only if they are different is
              the window marked as modified.
           !Window.c.colours:
            apply_dbox(..):
             Only redraws window and marks as modified if a colour has been
              changed.
           !Window.c.drag:
            finalise_drag(..):
             Takes no action if no movement has occurred.

           !Window.c.windowedit:
            windowedit_mouse_click(..):
             Now only accepts DRAG-SEL for move/copy.

           !Window.c.extent:
            apply_dbox(..):
             Only redraws window and marks as modified if extent has
              changed.

           !Window.c.gadget:
            gadget_rb_make_radio_group(..):
             Does nothing if the selected radio buttons already constitute
              a single group.
            gadget_link_writables(..):
             Does nothing if the selected writables are already correctly
              linked.

           !Window.c.keycuts:
            keycuts_apply_dbox(..):
             Only marks window as modified if the keyboard shortcuts have
              changed in any way.

           !Window.c.toolbars:
            apply_dbox(..):
             Only marks window as modified if toolbar information has
              changed.
           !Window.c.windowedit, h.windowedit:
            equalstrings(..):
             New function which returns TRUE iff its two arguments are
              either both NULL, or both non-NULL and the same string.

           !Window.c.move:
            move_selected_gadgets(..):
             Takes no action if no movement occurred.
           !Window.c.resize:
            resize_selected_gadgets(..):
             Takes no action if no movement has occurred.

16-Nov-94  !Window.c.drag:
            drag_interactor(..):
           !Window.c.move:
            move_interactor(..):
           !Window.c.resize:
            resize_interactor(..):
             Notes modification whenever auto-scrolling takes place.

           !Window.c.props:
            apply_main_dbox(..):
            apply_other_dbox(..):
             Changed to note modification only if changes have occurred.
            clonestring(..):
            main_props_copy(..):
            other_props_copy(..):
            compare_main_props(..):
            compare_other_props(..):
             New functions to assist above changes.

           !Window.c.props:
            props_main_dbox_mouse_click(..):
            props_other_dbox_mouse_click(..):
           !Menu.c.props:
            props_menu_dbox_mouse_click(..):
            props_entry_dbox_mouse_click(..):
             ADJ/click/OK now repositions caret properly.

           !Menu.c.drag:
            finalise_drag(..):
             Now notes modification only if the src/dst menu(s) have been
              altered.
            menu_entry_order_copy(..):
            compare_menu_entry_order(..):
             Auxiliary functions used by finalise_drag(..).

17-Nov-94  !Menu.c.props:
            apply_menu_dbox(..):
            apply_entry_dbox(..):
             Changed to note modification only if changes have occurred.
            clonestring(..):
            equalstrings(..):
            menu_props_copy(..):
            entry_props_copy(..):
            compare_menu_props(..):
            compare_entry_props(..):
             New functions to assist above changes.

           shell.c.document:
            document_key_pressed(..):
             ^X only calls document_delete_selection(..) if there is at least
              one icon selected.
           shell.c.objflags:
            update(..):
             Only notes modification if the flags are actually changed.

           shell.c.main:
           !Menu.c.main:
           !Window.c.main:
           !Misc.c.main:
            start_wimp(..):
             The Wimp_Initialise call now includes an explicit list of those
              messages which are processed.

           !Window.h.windowedit, c.windowedit, c.props, c.colours:
            Those properties that can be edited by property dialogue boxes
             are grouped together in a sub-record of the WindowObjRec: this
             makes it easier to save and compare to detect changes when
             applying a dbox, and enhances maintainability.
           !Window.c.windowedit, h.windowedit:
            New function clonestring(..) which replaces a non-null string
             pointer by a pointer to a copy of the string.
           !Window.c.gadget:
            clone_string(..):
             Deleted.
            gadget_load(..):
            gadget_copy(..):
             Now call clonestring(..) instead of clone_string(..).
            compare_gadget(..):
             Now uses equalstrings(..) instead of strcmp(..).
           !Window.c.props:
            MainPropsRec, OtherPropsRec definitions deleted.
            clonestring(..):
             Deleted.
            main_props_copy(..):
            other_props_copy(..):
             Replaced by props_copy(..).
            compare_main_props(..):
            compare_other_props(..):
             Replaced by compare_props(..).
            apply_main_dbox(..):
            apply_other_dbox(..):
             Calls to the above appropriately amended.

           !Menu.c.menuedit, h.menuedit:
            clonestring(..):
            equalstrings(..):
             New functions.
           !Menu.c.props:
            clonestring(..):
            equalstrings(..):
             Deleted.
            menu_props_copy(..):
            entry_props_copy(..):
             Use new version of clonestring(..).

           !Menu.h.menuedit:
            Fields in menu records and menu entry records which can be edited
             by the menu (entry) dbox are now grouped as subrecords.
           !Menu.c.menuedit, c.props, c.drag:
            Changed to reflect new structures.
            free_entry(..):
             Now frees clickshow and submenushow strings as well!

           !Menu.c.props:
            menu_props_copy(..):
            entry_props_copy(..):
            compare_menu_props(..):
            compare_entry_props(..):
             Improved code.

           !Misc.c.objedit, h.objedit:
            clonestring(..):
            equalstrings(..):
             New functions.
           !Misc.c.object:
            clone_string(..):
             Deleted.
            object_load(..):
            copy_body(..):
             Use clonestring(..) instead of clone_string(..).
            compare_bodies(..):
             Improved code.

           !Misc.c.object, common.h.swicall, common.h.wimp:
            #defines for ColourPicker SWIs moved from c.object to h.swicall.
            Structures and messages for ColourPicker moved from c.object to
             h.wimp.

18-Nov-94  !Resed.Messages, !Menu.Messages, !Window.Messages, !Misc.Messages:
            Checked for completeness and all error and explanatory messages
             revised.

           !ResEd.Messages:
            Help messages added for the shell.
           !ResEd.Templates, shell.c.copy, c.rename:
            Copy: COPY icon renamed OK.
            Rename: RENAME icon renamed OK.
           !Menu.Messages:
            Help messages added for menu editor - other than detailed items
             for property dboxes.
           !Window.Templates, c.grid, c.coords:
            Grid, Coords: CANCEL renamed CANCELT.
           !Window.c.help:
            help_text_for_gadget_dbox(..):
            help_text_for_other_dbox(..):
           !Misc.c.help:
            help_text_for_object_dbox(..):
            help_text_for_other_dbox(..):
           !Menu.c.help:
            help_text_for_dbox(..):
             Special treatment for ADJ_UP/ADJ_DOWN icons.
           !Window.Messages:
            Help messages added for window editor - other than detailed items
             for property dboxes.
           !Misc.Templates, c.object:
            FileType: CANCEL renamed CANCELT.

           !Window.!Run:
            Default slot-size increased to 256k.

           common.h.resed: - version number updated to 0.22.
           !Help files updated for ResEd and the three CSEs.
           !ResEd.!Run - module version numbers updated as necessary.
           Set DEBUG = 0 in common.h.debug and DBMALLOC = 0 in
            common.h.dbmalloc - and recompile for release.
********   Version 0.22 (18-Nov-94) released on aquarius.$.release   ********
********   SrcFiler version 028 made from version 0.22 (18-Nov-94)   ********
           common.h.resed: - version number updated to 0L23.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

           !Window.Messages:
            Experiment with alternative tokens, and with shorthand.

21-Nov-94  common.c.saveas:
            saveas_interactor(..):
           shell.c.document:
            document_load_prototypes(..):
            document_open_window(..):
            drag_interactor(..):
           shell.c.main:
            mouse_click(..):
            open_window_request(..):
            close_window_request(..):
            redraw_window_request(..):
           !Menu.c.lassoo:
            select_bounded_entries(..):
           !Window.c.gadget:
            gadget_save(..):
           !Window.c.main:
            message(..):
           !Window.c.windowedit:
            windowedit_font_changed(..):
           !Misc.c.main:
            message(..):
           !Misc.c.objedit:
            windowedit_font_changed(..):
             Remove conditional code no longer required.
           !Window.c.gadget:
            gadget_load(..):
             Remove code to force bit 30 in labelled boxes - since they can
              only be created from a prototype with this bit set.

           common.c.saveas:
            saveas_interactor(..):
             Minor recoding to avoid compiler warning messages.
           shell.c.document:
            document_save_to_memory(..):
            document_load(..):
             'FSER' -> 'F' << 24 | ... | 'R' - to avoid compiler warning.
            document_load_prototypes(..):
            document_claim_drag(..):
             Minor recoding to avoid compiler warnings.
            document_help_text(..):
             Remove declaration for 'text' - not used.
           !Menu.c.menuedit:
            menuedit_open_palette(..):
             'FSER' -> 'F' << 24 | ... | 'R' - to avoid compiler warning.
            menuedit_help_text(..):
             Remove declaration for 'text' - not used.
           !Window.c.windowedit:
            windowedit_rename_window(..):
             Remove declaration for 'buf' - not used.
            windowedit_open_palette(..):
             'FSER' -> 'F' << 24 | ... | 'R' - to avoid compiler warning.
            windowedit_help_text(..):
             Remove declaration for 'text' - not used.
           !Misc.c.protocol:
            received_resed_object_load(..):
             Comment out label 'versionerror' since it is not currently used.
           !Misc.c.objedit:
            objedit_rename_object(..):
             Remove declaration for 'buf' - not used.
           !Misc.c.object:
            object_fmfd_font_popup(..):
             Macro now occupies less lines to avoid compiler warning.

           shell.c.document:
            document_load_prototypes(..):
           !Window.c.windowedit:
            create_menu(..):
           !Misc.c.object:
            object_fisa_create_menu(..):
             Double-cast - (void *) (int) f - when calling menu_entry with a
              sub-menu callback function to avoid compiler warnings.
           common.h.wimp:
            Type of the 'submenu' field in a MenuWarning message record is
             now void (*) (void); this makes it possible to avoid compiler
             warning messages.
           !Window.c.gadgdefs:
            Double-cast for alignment function to avoid compiler warning.
           !Window.c.grid:
            snap_gadget(..):
             Uses a union variable to call a special alignment function
              without a compiler warning.

           !ResEd.Messages:
           !Menu.Messages:
           !Window.Messages:
           !Misc.Messages:
            Now use pre-defined "Help" tokens to save space.

           !Menu.c.props:
            props_menu_dbox_mouse_click(..):
            props_entry_dbox_mouse_click(..):
             Now deals correctly with ADJ clicks on adjuster arrows.

           !Menu.c.menuedit:
            menuedit_mouse_click(..):
             Drag-ADJUST no longer works on a menu entry.

22-Nov-94  shell.c.class, !ResEd.Messages:
            class_launch_CSE(..):
             Include test on returned taskid to check that CSE has, indeed,
              successfully started. New error message.

           !Misc.c.help:
            help_text_for_object_dbox(..):
            help_text_for_other_dbox(..):
             Now treat icon-names ending in "MAX" specially.
            help_expand(..):
             New function to allow one help message to reference others.
            help_message(..):
             Calls help_expand(..) when necessary.

           !Window.Templates:
            After field in Writable now allows &.

           !Misc.Messages:
            Updated to include full Help support for all dialogue boxes.

23-Nov-94  !Menu.c.help:
            help_text_for_dbox(..):
             Now treats icon-names ending in "MAX" specially.
            help_expand(..):
             New function to allow one help message to reference others.
            help_message(..):
             Calls help_expand(..) when necessary.
           !Misc.c.help, !Menu.c.help:
            check_for_icons(..):
             New auxiliary function to tidy up the code.

           !Menu.Messages:
            Updated to include full Help support.

           !Window.c.help:
            help_text_for_gadget_dbox(..):
            help_text_for_other_dbox(..):
             Now treat icon-names ending in "MAX" specially.
            help_expand(..):
             New function to allow one help message to reference others.
            check_for_icons(..):
             New auxiliary function to tidy up the code.
            help_message(..):
             Calls help_expand(..) when necessary.

           !Window.Messages:
            Updated to include full Help support.

24-Nov-94  !Window.Messages, !Menu.Messages, !Misc.Messages, !ResEd.Messages:
            Further minor improvements.

           !Menu.c.props:
            compare_menu_props(..):
             Removed some redundant (and confusing) code whose effect was to
              free the menu title when it should not do so.

           shell.c.genmsgs:
            genmsgs_import_file(..):
             No longer frees the file buffer before reading it!
            genmsgs_saveas_cb(..):
             Now allocates enough bytes for write_messages(..), instead of
              just one too few.

           !Window.c.keycuts:
            keycuts_dbox_mouse_click(..):
             Now puts caret in EVENT/OBJECT field when the associated option
              icon is switched on, and ensures caret is not left in a faded
              field when the function is complete.

           !ResEd.Messages, !Menu.Messages, !Window.Messages:
            Keyboard shortcuts changed:
             ^X -> ^K           (Delete)
             ^K -> SHFT/K       (Key shortcuts)

25-Nov-94  common.c.dbox(..):
            dbox_set_caret_to(..):
             Now recognises button type = 14 as potential writables as well
              as type = 15.

           shell.c.genmsgs:
            Extra field added to import closure so that the import interactor
             will either call import_messages or free the buffer - never
             both.

           !ResEd.Sprites, .Sprites22:
            New sprites for the ColourPicker pop-up icon.

           !Misc.Templates:
            ColourDbox - the Colour Picker pop-up iocn uses the new sprites.

           !Window.c.colours:
            colours_dbox_mouse_click(..):
           !Window.c.gadget:
            gadget_dbox_mouse_click(..):
           !Window.c.props:
            props_other_dbox_mouse_click(..):
           !Window.c.gadgdefs:
           !Misc.c.objdefs:
           !Misc.c.object:
            object_cd_colour_popup(..):
            object_cm_colour(..):
            object_fi_filetype_popup(..):
            object_fd_initial_popup(..):
            object_fm_ticked_popup(..):
            object_ib_position_popup(..):
            object_pi_licence_popup(..):
            object_sa_filetype_popup(..):
             Menu clicks on the associated field no longer pop-up the menu.

           common.h.resed: - version number updated to 0.23.
           !Help files updated for ResEd and the three CSEs.
           !ResEd.!Run - module version numbers updated as necessary.
           Set DEBUG = 0 in common.h.debug and DBMALLOC = 0 in
            common.h.dbmalloc - and recompile for release.
********   Version 0.23 (25-Nov-94) released on aquarius.$.release   ********
********   SrcFiler version 029 made from version 0.23 (25-Nov-94)   ********
           common.h.resed: - version number updated to 0L24.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

           common.c.dbmalloc:
            Now calls display(..) to pop-up a message whenever some
             allocation problem is discovered!

           common.c.dbox:
            dbox_set_caret_to(..):
            dbox_place_caret(..):
             DEBUG check now allows type = 14 icons through!

           !Window.c.gadget:
            gadget_link_writables(..):
             Now frees space malloc'd for the sort!

           !Window.c.windowedit:
            windowedit_close_window(..):
             Now frees space occupied by any toolbar ids.

           !Menu.c.props:
            props_close_menu_dbox(..):
            props_close_entry_dbox(..):
             Now free the dialogue box after deleting it!

           shell.c.document:
            _document_close_window(..):
             Now frees the doc->mapping structure before freeing the document
              itself.

28-Nov-94  common.c.dbox, h.dbox:
            dbox_changeint(..):
             Removed - not used.

           !Window.h.main:
            Split BUTTON_MENU registry type into ICON_BUTTON_MENU and
             WINDOW_BUTTON_MENU to allow separate interactive help messages.
           !Window.c.props, h.props, c.gadget:
            props_load_prototypes(..):
             Registers button menu as ICON_BUTTON_MENU initially.
            props_button_choose(..):
             Has extra parameter to define which type of button menu is to be
              registered. The button menu is then de- and re-registered as
              required.
            props_other_dbox_mouse_click(..):
            gadget_dbox_mouse_click(..):
             Include extra parameter to call.

           !Window.c.windowedit:
            windowmenu_cb(..):
             Cause any weak selection to persist when "Select all" chosen.
            prepare_menu(..):
             Does not grey out "Select all" if the only selected item is a
              weak selection.
            post_windowmenu(..):
             Now sets weakselection field before calling prepare_menu(..).

           !Menu.c.menuedit:
            menumenu_cb(..):
             Cause any weak selection to persist when "Select all" chosen.
            post_menumenu(..):
             Now sets weakselection field before calling prepare_menu(..).

           shell.c.document:
            docmenu_cb(..):
             Cause any weak selection to persist when "Select all" chosen.
            post_docmenu(..):
             Now sets weakselection field before calling prepare_menu(..).

           !ResEd.MakeFile:
            Can now pass CFLAGS through to the individual components.

           common.h.resed: - version number updated to 0.24.
           !Help files updated for ResEd and the three CSEs.
           !ResEd.!Run - module version numbers updated as necessary.
           Set DEBUG = 0 in common.h.debug and DBMALLOC = 0 in
            common.h.dbmalloc - and recompile for release:
                  amu CFLAGS=-ff
                  amu install INSTDIR=$.aquarius.releases.ResEd.024
********   Version 0.24 (28-Nov-94) released on aquarius.$.release   ********
********   SrcFiler version 030 made from version 0.24 (28-Nov-94)   ********
           common.h.resed: - version number updated to 0L25.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

29-Nov-94  !ResEd.MakeFile:
            CFLAGS passed through with "install" rule, too. This change has
             also been checked in to the source tree, although no new version
             was made.

30-Nov-94  !Window.Templates:
            STRINGS field in stringset: length increased to 999 bytes.

01-Dec-94  !Window.h.windowedit:
            New field type FLD_LENGTH defined. This is to cope with "length"
             fields whose minimum values are not simply the length of some
             specified single string.

           !Window.c.gadget, h.gadget:
            gadget_load(..):
             Creates extension record entry for FLD_LENGTH fields, and
              initialises it correctly.
            gadget_init_dbox(..):
             Sets a FLD_LENGTH icon properly.
            gadget_apply_dbox(..):
             Updates the associated field for a FLD_LENGTH icon properly.
            gadget_ss_min_maxselectedstringlen(..):
             New function calculates minimum value for the
              maxselectedstringlen field of a string set gadget.

           !Window.c.gadgdefs:
            Defines the stringset field maxselectedstringlen as a FLD_LENGTH
             field.

           !Window.Messages:
            Revised help message for the Length field in the StringSet dbox.

07-Dec-94  common.h.resed: - version number updated to 0.25.
           !Help files updated for ResEd and the three CSEs.
           !ResEd.!Run - module version numbers updated as necessary.
           Set DEBUG = 0 in common.h.debug and DBMALLOC = 0 in
            common.h.dbmalloc - and recompile for release:
                  amu CFLAGS=-ff
                  amu install INSTDIR=$.aquarius.releases.ResEd.025
********   Version 0.25 (07-Dec-94) released on aquarius.$.release   ********
********   SrcFiler version 032 made from version 0.25 (07-Dec-94)   ********
           common.h.resed: - version number updated to 0L26.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

19-Dec-94  !Window.c.winddrag:
            winddrag_resize_start(..):
             Window is now raised to top of stack before starting resize.

           !Window.c.grid:
            grid_set_defaults(..):
             Default grid spacings are now read from the Messages file.
           !Window.Messages:
            Initial grid spacings set to 32.

20-Dec-94  !ResEd.Templates, !Window.Templates, !Misc.Templates,
           !Menu.Templates:
            Bottom left-hand corners of all icons are now guaranteed to be on
             4-pixel boundaries.
            Horizontal alignment of all text checked in mode 39.
            Size of all gadgets checked to conform to style-guide criteria.

********   Templates updated in release 0.25.                        ********

           !Window.c.grid:
            grid_set_defaults(..):
             Default "Show grid" and "Lock grid" options are now read from
              the Messages file.
           !Window.Messages:
            "Show grid" and "Lock grid" options initially off.

22-Dec-94  !Misc.Messages:
            "receiveed" replaced by "received".

           !Misc.!Run:
            Sets the "Filetype" menu filetype variables if not already set.

           common.h.resed: - version number updated to 0.26.
           !Help files updated for ResEd and the three CSEs.
           !ResEd.!Run - module version numbers updated as necessary.
           Set DEBUG = 0 in common.h.debug and DBMALLOC = 0 in
            common.h.dbmalloc - and recompile for release:
                  amu CFLAGS=-ff
                  amu install INSTDIR=$.aquarius.releases.ResEd.026
********   Version 0.26 (22-Dec-94) released on aquarius.$.release   ********
********   SrcFiler version 033 made from version 0.26 (22-Dec-94)   ********
           common.h.resed: - version number updated to 0L27.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

04-Jan-95  !Window.c.align:
            align_selection_to(..):
             Notes modification if any gadget is moved.
            align_gadget(..):
             Returns TRUE only if the gadget has to be moved.
           !Window.c.coords:
            execute_coords(..):
             Notes modification if any gadget has moved/changed in size.
           !Window.c.grid:
            grid_snap(..):
             Notes modification if any gadget has moved.

           !Misc.c.object:
            fontmenu_cb(..):
            object_fmfd_font_popup(..):
             Use message_lookup(.. "SysFont") in place of "System Font".
           !Misc.Messages:
            New token SysFont.
           !Misc.c.objdefs:
            New special functions object_fm/fd_allowsystem(..) are specified
             to be called when the user clicks on the "Allow system font"
             option button in a FontDbox or FontMenu properties dbox.
           !Misc.c.object, h.object:
            New functions object_fm/fd_allowsystem(..) now ensure that the
             corresponding ticked/initial font field is *not* set to the
             system font if the button is off.

           !Window.c.keycuts:
            keycuts_dbox_key_pressed(..):
             Now marks any keypress directed to the KEY icon as "consumed".

06-Jan-95  !Window.c.props:
            props_update_main_dbox(..):
             Fades all icons to do with event delivery before/after showing
              if the window is a toolbar.

           common.h.resed: - version number updated to 0.27.
           !Help files updated for ResEd and the three CSEs.
           !ResEd.!Run - module version numbers updated as necessary.
           Set DEBUG = 0 in common.h.debug and DBMALLOC = 0 in
            common.h.dbmalloc - and recompile for release:
                  amu CFLAGS=-ff
                  amu install INSTDIR=$.aquarius.releases.ResEd.027
********   Version 0.27 (06-Jan-95) released on aquarius.$.release   ********
********   SrcFiler version 034 made from version 0.27 (06-Jan-95)   ********
           common.h.resed: - version number updated to 0L28.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

11-Jan-95  !Misc.Templates:
            The size of the 'Message' label for the labelled boxes in the
             DCS and Quit templates has been increased to avoid truncation
             when used with the Homerton DeskTop font.

           common.h.resed: - version number updated to 0.28.
           !Help files updated for ResEd and the three CSEs.
           !ResEd.!Run - module version numbers updated as necessary.
           Set DEBUG = 0 in common.h.debug and DBMALLOC = 0 in
            common.h.dbmalloc - and recompile for release:
                  amu CFLAGS=-ff
                  amu install INSTDIR=$.aquarius.releases.ResEd.028
********   Version 0.28 (11-Jan-95) released on aquarius.$.release   ********
********   SrcFiler version 035 made from version 0.28 (11-Jan-95)   ********
           common.h.resed: - version number updated to 0L29.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

13-Jan-95  !Misc.Messages
            SysFont tag value changed to "SystemFont"; this is now recognised
             by the FontMenu and FontDbox modules.

********   Version 0.28 (11-Jan-95) updated on aquarius.$.release    ********
           !Misc.Messages checked in to the SrcFiler tree.
********   SrcFiler version 036 made.                                ********

*****************************************************************************
***********************   FREEZE AND RELEASE VERSION  ***********************
*****************************************************************************

24-Jan-95  !Misc.c.protocol, !Window.c.protocol, !Menu.c.protocol:
            received_resed_object_load(..):
             If an error arises while the object is being loaded, flag bit 0
              (as opposed to flag bit 1) is now set when sending the
              RESED_OBJECT_LOADED message back to the Shell.

30-Jan-95  !Misc.Templates:
            FontDbox: The "Use alternative window" and "Deliver event"
             sections have been swapped around so that this dialogue box is
             now consistent with the others.

02-Feb-95  !Misc.Templates:
            FontDbox: "Use alternative window" writable moved by 2 OS units
             so that its vertical position is a multiple of 4 OS units.

08-Feb-95  shell.c.protocol:
            cse_died(..):
             Now resets 'importing' flag as well as 'modified' and 'editing'
              flags for any objects which 'belonged' to the CSE that has just
              died.

15-Feb-95  !Window.Templates:
            Extent and Coords templates altered to allow larger window sizes:
             the previous limit was 5 chars (ie -9999 to 99999); the new
             limit is 7 chars (ie writable icon with length 8).

20-Feb-95  !Window.Templates:
            Title of string set properties dbox changed from "String Set" to
             "String set".

********   Sources copied to SrcFiler tree, but no new version made  ********

03-Mar-95  common.h.resed: - version number updated to 0.29.
           !Help files updated for ResEd and the three CSEs.
           !ResEd.!Run - module version numbers updated as necessary.
           Set DEBUG = 0 in common.h.debug and DBMALLOC = 0 in
            common.h.dbmalloc - and recompile for release:
                  amu CFLAGS=-ff
                  amu install INSTDIR=$.aquarius.releases.ResEd.029
********   Version 0.29 (03-Mar-95) released on aquarius.$.release   ********
********   SrcFiler version 037 made from version 0.29 (03-Mar-95)   ********
           common.h.resed: - version number updated to 0L30.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

10-Mar-95  common.h.resed:
            Version number changed to "0E30" to indicate special version.
            This version will be compiled with CFLAGS=-DNOBBLE, and special
             code will be included to scramble resource files and prevent
             saving other than to !ResTest.

           shell.c.document:
            document_save_to_memory(..):
             NOBBLE code added to xor every word of a resource file other
              than the first with the first.
            prepare_menu(..):
             File=>Save=> entry shaded if NOBBLEd.
            document_load_prototypes(..):
             key_save is not defined if NOBBLEd.
            drag_callback(..):
             A drop outside the current application is accepted only if it
              is to the !ResTest application icon on the icon bar, if
              NOBBLEd.
             SHIFT-drag's within the same window (to create copies of
              objects) are ignored if NOBBLEd.

13-Mar-95  shell.c.main:
            warn_exit(..):
             Never offers a save opportunity if NOBBLEd.

           shell.c.document:
            document_close_window(..):
            datasave_interactor(..) (twice):
            drag_callback(..):
             Code to call issue_close_warning(..) is not compiled for the
              NOBBLEd version, thus not giving the user an opportunity to
              save a modified document when he closes it.

          !ResEd.MakeFile:
           Replace amu CFLAGS=$(CFLAGS) by amu CFLAGS="$(CFLAGS)" to make
            sure that multiple cc arguments are passed down.

15-Mar-95  shell.c.document:
            drag_callback(..):
             NOBBLEd code modified to accept drops onto any CSE window as
              well; this is necessary to allow object name insertion by drag
              and drop.

********   Special "nobbled" version made:                           ********
            DEBUG = 0, DBMALLOC = 0, amu CFLAGS="-ff -DNOBBLE"
            VERSION_NUMBER = "0E30"
           Saved in aquarius.releases.E30:
            amu install INSTDIR=$.aquarius.releases.ResEd.E30

           Version number updated to 0L31, DEBUG = 1, DBMALLOC = 1, and
            system rebuilt.

31-Mar-95  !Window.c.move:
            move_selected_gadgets(..):
             The code now correctly determines the original position of the
              moved gadgets by subtracting the *unaligned* offset from the
              new bounding box. This cures a redraw bug.

           common.h.resed: - version number updated to 0.31.
           !Help files updated for ResEd and the three CSEs.
           !ResEd.!Run - module version numbers updated as necessary.
           Set DEBUG = 0 in common.h.debug and DBMALLOC = 0 in
            common.h.dbmalloc - and recompile for release:
                  amu CFLAGS=-ff
                  amu install INSTDIR=$.aquarius.releases.ResEd.031
********   SrcFiler version 038 made from version 0.31 (31-Mar-95)   ********
           common.h.resed: - version number updated to 0L32.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

18-Apr-95  shell.c.document:
            find_grid_width(..):
             The width of a document window is now never allowed to exceed
              the width of the screen. This fixes a "toggle-size" bug.

09-May-95  !Misc.Messages:
            CorruptWindow message: replace "object object" by "object".

           !Window.h.main:
            Removed definition of READY (no longer needed).
            Added definition of DEBUGREDRAW.

           !Window.c.windowedit:
            windowedit_redraw_window(..):
             Reports error during redraw only if DEBUGREDRAW is non-zero
              (used to depend only on DEBUG).

           shell.c.main:
            ramtransmit_message(..):
             Now replies with a RAM_FETCH message if there is more data to be
              transferred (previously it replied with a RAM_TARNSMIT
              message). Discovered while using the SaveAs module from the
              Toolbox which doesn't make its buffers quite big enough ...

15-May-95  !Window.c.windowedit:
            windowedit_redraw_window(..):
             Issues Service Call &44ec6 with R0 containing window handle just
              before redraw starts; this is intercepted by the window module
              so that PlotGadget can know where the window is if it needs to.

                 *** Start of changes for Aquarius Update 1 ***

17-May-95  !Window.Templates:
            'Unknown' template updated to include fields for more general
             editing.
           !Window.h.windowedit:
            New reference type REF_SPRITE added.
           !Window.c.gadget:
            create_body_description(..):
             Process SpriteAreaReferences properly.
            gadget_load(..), gadget_save(..), gadget_size(..),
            gadget_copy(..), gadget_free(..), compare_gadgets(..):
             Processes REF_SPRITE fields correctly.

           !Window.c.gadgdefs, !Window.h.gadget, !Window.c.gadget:
            Update "unknown gadget type definition" to call gadget_uk_init,
             gadget_uk_apply, gadget_uk_offset_up and gadget_uk_offset_down
             at appropriate moments.

           !Window.c.gadget:
            gadget_uk_init(..), gadget_uk_apply(..):
             Write/read "other flags" field as hexadecimal number.
            gadget_open_dbox(..):
             If this call creates a dbox for an unknown gadget, then it now
              also creates an empty extension record.
            gadget_close_dbox(..):
             This frees the extension record belonging to an unknown gadget.
18-May-95   gadget_copy(..):
             Does not copy the extension record of an unknown gadget.
            compare_gadgets(..):
             Does not compare extension records of unknown gadgets.
            gadget_uk_init(..), gadget_uk_apply(..),
            gadget_uk_offset_up(..), gadget_uk_offset_down(..),
            gadget_uk_offset(..),
            uk_field_is_string(..), load_uk_field(..), save_uk_field(..):
             Code to process "Other fields" section of the unknown gadgets
              dialogue added: values are temporarily stored in the extension
              record, and consolidated into the gadget body proper only when
              the dbox is applied.

           !Window.c.gadget, c.gadgdefs, h.windowedit, h.gadget:
            gadget_dbox_mouse_click(..), gadget_uk_offset(..):
             New action ACT_SPECIALX; this is like ACT_SPECIAL, but passes
              extra parameters for the icon and mouse state. This is now
              used by gadget_uk_offset(..), and the two subsidiary functions
              _offset_up and _offset_down are no longer required.

           !Window.Templates, c.gadgdefs:
            "Unknown" template has added option buttons to select a NULL
             value for a string or message reference.
           !Window.c.gadget:
            load_uk_field(..), save_uk_field(..):
             Now allows a NULL value to be specified for a string or a
              message value.

            gadget_open_dbox(..):
             Sets the dbox' title to include the type for an unknown gadget.

19-May-95  !Misc.c.objdefs, h.objdefs:
            Added prototype unknown object definition: unkobjectdef.
           !Misc.Templates:
            Added new template 'Unknown' for unknown object editing.
           !Misc.c.object, h.object:
            Dummy functions object_uk_init(..), object_uk_apply(..) and
             object_uk_offset(..) declared.
           !Misc.c.protocol:
            received_resed_object_load(..):
             Accepts unknown objects, calling object_create_def(..) to create
              an appropriate definition. Also treats unknown versions of
              known objects in the same way.
           !Misc.Messages:
            "BadVersion" message amended to reflect new processing.
           !Misc.c.object:
            object_create_def(..):
             New function creates an object definition for an unknown object
              by filling in a copy of unkobjectdef.
           !Misc.h.objedit:
            Add new ref-types REF_SPRITE and REF_OFFSET.
           !Misc.c.object:
            object_load(..), object_save(..), object_size(..),
            object_free(..), compare_bodies(..), copy_body(..):
             Modified to allow for new reference types.
           !Misc.c.object:
            object_free(..):
             Releases space occupied by the definition for unknown objects.
            object_init_dbox(..):
             Fills in title for unknown dialogue properly.
           !Misc.!Config:
            Add "Unknown" so that the shell will forward unknown objects.
           !Misc.!Icons, !Misc.!Icons22:
            Add obj_unknown icons.

           shell.c.class:
            class_lookup (..):
             Returns the value of a new static 'unkclassptr' if the class is
              not specifically registered.
            investigate_cse(..):
             If "Unknown" is encountered as a class number, the resulting
              ClassPtr is assigned to unkclassptr.

           !Misc.c.main:
            load_prototypes_and_create_menus(..):
             Loads template for unknown object class properties dialogue.

           !Misc.h.objedit:
            Add new field 'bodycopy' to ObjectRec's; this will contain the
             address of a copy of the object's body which is maintained while
             the object is being edited.
           !Misc.c.object:
            object_open_dbox(..):
             Creates and clears the bodycopy record.
            object_close_dbox(..):
             Frees space occupied by the bodycopy record, and by any strings
              inside it.

22-May-95  !Misc.c.object:
            object_uk_init(..), object_uk_apply(..), object_uk_offset(..),
            uk_field_type(..), save_uk_field(..), load_uk_field(..),
            object_uk_offset_change(..):
             Code derived from the corresponding routines in !Window. The
              main change is the addition of code to handle object offset
              values.
           !Misc.c.protocol:
            relocate(..), relocate_make_ref(..):
             Object offsets are represented "as-is" inside !Misc; they are
              not relocated in any way.

           !Misc.!Icons, !Icons22:
            obj_unknown includes a question mark.

           !Misc.Messages, !Window.Messages:
            Updated to add !Help messages for the new features.

           common.h.resed: - version number updated to 0.32.
           !Help files updated for ResEd and the three CSEs.
           !ResEd.!Run - module version numbers updated as necessary.
           Set DEBUG = 0 in common.h.debug and DBMALLOC = 0 in
            common.h.dbmalloc - and recompile for release:
                  amu CFLAGS=-ff
                  amu install INSTDIR=$.aquarius.releases.ResEd.032
********   SrcFiler version 039 made from version 0.32 (22-May-95)   ********
           common.h.resed: - version number updated to 0L33.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

24-May-95  !Window.c.gadget:
            gadget_open_dbox(..), gadget_uk_init(..), gadget_uk_apply(..):
             Adjusted to cope with gadgets with zero body size.
            object_open_dbox(..), object_uk_init(..), object_uk_apply(..):
             Adjusted to cope with objects with zero body size.

           !Misc.c.object:
            object_free(..), object_init_dbox(..), object_open_dbox(..),
            object_close_dbox(..):
             The test for whether a definition is a "dynamic" one or not is
              changed from 'def->version < 0' to 'def->templatename ==
              unkobjectdef->templatename', since the version field needs to
              contain the unknown object's version number!
           !Misc.c.protocol:
            received_resed_object_load(..):
             Copies version from message into dynamically created definition
              for unknown objects (or unknown versions of known objects).

25-May-95  !Window.c.gadgdefs:
            Minimum size for unknown gadgets set to 16,16.
           !Misc.c.objedit:
            objedit_load(..):
             Now preserves value of "Offset" field when an unknown object is
              reloaded as a result of message import.
           !Misc.c.object:
            object_dbox_update_window_name(..):
             Now deals correctly with unknown object properties dboxes.

           shell.c.genmsgs:
            import_messages(..):
             Now correctly deals with the case of a resource which includes
              only NULL messages.

           !Window.h.main, c.main:
           !Misc.h.main, c.main:
            New global 'wimpversion' defined and initialised in main(..).
           !Window.c.keycuts:
            keycuts_load_prototypes(..):
             Uses the global 'wimpversion'.
           !Window.c.gadget:
            gadget_uk_init(..), load_uk_field(..):
           !Misc.c.object:
            object_uk_init(..), load_uk_field(..):
             Only shade labels if wimpversion >= 350.

           shell.c.genmsgs:
            importwarn_interactor(..):
             Now handles "RETURN" in the same way as clicking on "Import"
              action button.

           common.h.resed: - version number updated to 0.33.
           !Help files updated for ResEd and the three CSEs.
           !ResEd.!Run - module version numbers updated as necessary.
           Set DEBUG = 0 in common.h.debug and DBMALLOC = 0 in
            common.h.dbmalloc - and recompile for release:
                  amu CFLAGS=-ff
                  amu install INSTDIR=$.aquarius.releases.ResEd.033
********   SrcFiler version 040 made from version 0.33 (25-May-95)   ********
           common.h.resed: - version number updated to 0L34.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

20-Jun-95  !Window.h.main:
            New compile-time flag KEYNUDGE which determines whether code to
             allow "nudging" of the current selection of gadgets is compiled
             or not.
           !Window.c.windowedit:
            windowedit_key_pressed(..):
             Calls windowedit_nudge_selection(..) if there is a current
              selection, and the user has pressed a cursor key.
            windowedit_nudge_selection(..):
             This new function will move or resize each gadget in the current
              selection.

           This version given to Dean Murphy to trial; version number updated
            to 0L35.

10-Jul-95  !Window.c.resize:
            resize_plot_boxes(..):
             When the internal resize ear of a numberrange gadget is being
              dragged, and the boundary is hit, then the mouse pointer is
              constrained by a call of OS_Word 21, 1: previously, this
              allowed the mouse to move off screen vertically; now it is
              constrained to remain within the window.
            resize_interactor(..):
             At the end of a resize drag of any kind, the mouse pointer is
              constrained explicitly by a call of OS_Word 21, 1: previously,
              this allowed the mouse pointer to move off-screen in all
              directions; now it is constrained to remain on the screen (thus
              fixing a reported fault).

05-Oct-95  common.c.dragdrop:
            dragdrop_scroll(..):
             Returns FALSE (no scroll) if ALT key is down at the time of the
              call.

           common.h.resed: - version number updated to 0.35.
           !Help files updated for ResEd and the three CSEs.
           !ResEd.!Run - module version numbers updated as necessary.
           Set DEBUG = 0 in common.h.debug and DBMALLOC = 0 in
            common.h.dbmalloc - and recompile for release:
                  amu CFLAGS=-ff
                  amu install INSTDIR=$.aquarius.releases.ResEd.035
********   SrcFiler version 041 made from version 0.35 (05-Oct-95)   ********
           common.h.resed: - version number updated to 0L36.
           Set DEBUG = 1 in common.h.debug, DBMALLOC = 1 in
            common.h.dbmalloc; recompile.

22 Jun 2009 - R Griffin

Fixed a bunch of compiler warnings due to 'old style' function definitions.

Added support for TreeView and Tabs gadgets. Queries about these gadgets
should be addressed to rik.griffin@denbridgemarine.com.

Fixed data abort on adjust drag in document window.

Merged in files required for support of "Date" object.