History of development of FreeDock
==================================

1.01 alpha - First release to Angus, Neil & Martin

1.02 alpha - Fixed 2 bugs discovered by Martin :
             1) I windows directory is a SUBST'd drive, when the dock
                creates the path name to the program manager for files 
                which have no icons (.PIF, .COM etc.) the path was incorrect
                since it contained an extra \ i.e. p:\\progman.exe, this
                has been corrected by checking for the presence of a 
                trailing \ and only adding one if required.
             2) When starting a DOS session from a .PIF file, with a 
                stored window position, the FreeDock window was moved to 
                the stored position & size, this was caused by getting the
                active window too soon. It was solved by adding a loop which
                retries 25 times to get the active window which is not the 
                dock window, if this fails it does not try to position the
                window.

1.03       - Added the ability to drag slots around the dock, dropping a slot
             in an empty position moves the slot to that position. Dropping
             a slot in an occupied position swaps the location of the two
             slots. Dragging a slot off the dock, indicated by the cursor
             changing to a skull and crossbones removes the slot from the
             dock.
             Removed save option, .ini file now saved after any changes made.
             Removed confirmation dialog from Exit Dock & remove slot options.

1.04       - Fixed bug which was only partly fixed in 1.02 (1), the fix
             prevoiusly provided correctly for .PIF, .COM & .BAT files, but
             not for DOS .EXE files, this has now been corrected.


1.05       - Improved slot moving, icons do not now flicker when being moved,
             and picking up a slot now causes it to be picked up from the dock
             instead of only picking up a copy as was the case before.

1.06       - Added Choose Icon option which displays all icons in a file in
             pages of 50 icons at a time and allow the user to click on the 
             icon they wish to choose.
             Added Browse options to the App name and Iconfile fields, selecting
             a new app results in the icon file being changed to match the app
             ,if it contains any icons, otherwise the icons file is set to the
             program manager & Icon 2 is selected. If the App contains icons, 
             the first icon in the file is selected.

1.06a      - Minor addition, when files are associated, in the program manager,
             with an executable which is given as prog.exe (i.e. only the name
             and not a full path) the dock would fail to find the exe correctly
             and therefore be able to get the icon required. This has been 
             solved by doing a searchpath() on all exe's for associated files.

1.06b      - Minor modification to the logic which detects when a slot has been
             dragged off the dock, to stop all slot redraws whilst it is not 
             visible (i.e. outside the dock) this also had the effect of 
             stopping the skull & crossbones (Slot Remove Cursor) from 
             flickering.

1.06c      - Minor modification to the logic for detecting the diference
             between the first click of a double-click and a click or button
             down prior to dragging. Problem was causing icon to jump around
             in the dock when it was doubleclicked, this was caused by it
             momentarily being picked up and then dropped as the first click
             of the double click was processed. This has now been fixed.

1.07       - Tidied up for first release.

1.08       - Fixed a bug which meant that if multiple files were dropped on an app in 
             FreeDock the filenames were cat'd together & passed to the app. Now separates
             the filenames correctly with a space char.
             Added feature which allows the user to right click on an empty slot & have
             an empty slot dialog pop-up which can then be filled in with app details.
             This version was only released to eff who promptly found a bug in it.

1.09       - Fixed bug in 1.08 which resulted in the change dock position option not
             working correctly. Rewrote positioning code so that the dock is now
             repositioned as the user clicks the [top|bottom|left|right] radio buttons
             on the main dock options dialog. Dock pos is also stored at this point to
             allow it to be restored if the user selects cancel.
             Fixed a minor bug which resulted in changes made in the main dock options
             dialog not being saved (Spotted by Brian Duncan).

1.10       - Dock can now be dragged around like any other window, position
             is saved in .ini file. Dock position option in main options
             dialog now only has 2 options (horizontal & Vertical) for the
             orientation of the dock.
             Dock Size can now be adjusted in the Main options Dialog, 
             slots which are not displayed because the dock is too small are
             not lost, they are still stored in the .ini file.
             User can now select to launch an application in a slot with
             a single click (in main options dialog).


1.11       - (Not Realeased, just an archive point)
             Ported Freedock to NT, compiling with MS VC v1.5 & v2.0, Freedock
             now comes in 2 forms, 16 & 32 Bit (FREEDK16.EXE, FREEDK32.EXE).
             Tidied up the code a bit (not much :-) Added an entry to each slot
             to allow it's icon to be stored in the slot, these are still
             read from the original files at startup. 
             Added a startup option to allow any application in the dock to be 
             started as "Always On Top". Integrated the Choose Icon button
             into the Icon display in the Application Options Window, now you
             just click on the current icon in the Application Options dialog
             to get the Choose an Icon dialog.
             There is a minor problem with the way NT handles GetCapture which
             means that to grab a window, you must keep the right mouse button
             held down, position the grabber icon over the window to grab and 
             then left click. This can be fixed by redoing the mechanism so 
             that a grabber tool is dragged from the Application Options window
             and dropped on the desired window. Ala MSVC v2.0 Spy++ grabber.


1.20       - Reworked the mechanism for Caching Icons, there is now only a
             single bitmap and hdc into which all the icons are stored at 
             various locations (Slot.IconIndex is the X coordinate of the Icon
             within the IconCache with Y always 0). This method saves on
             resources (handles the DC's & Bitmaps).
             Reworked the Window Grabber tool so that it is now dragged from
             the Application Options dialog box (which automatically hides
             itself) onto the window whose size and location is to be grabbed.
             This gets around NT's method of handling the GetCapture() call.
             I suspect there may still be a resource leak of some kind in
             Freedock, but I cannot track it down at present.

1.20a      - Added OS dependent Title Icon, now shows which version of Freedock
             is running (16 or 32 bit)

1.20b      - Fixed a problem with the spawning of programs which had command
             lines (NT Only). Speeded up saving code by making it only update
             the slot which had changed. Tried to solve resource leak problem
             but it still seems to be present, still minor at the moment.

1.21       - Added conditional code for positioning of stored window positions
             under NT, fixed a bug in the reading of the .ini file which meant
             that the dock orientaion was always horizontal. Added calls to 
             FindExecutable to resolve location of progman.exe when searching
             for it to load the default icon from it.


1.21a      - Added a debug window which displays the IconCache, since this
             cannot be viewed in a debugger, the window also shows the 
             contents of the DockOptions and Slot[] data structures. The code
             for the debug window can be conditionally compiled by setting or
             commenting out the #define DEBUGGING_ON line in debug.h. When the
             code is compiled in, the debugging window is activated by starting
             Freedock with a /DEBUG command line option. Added code to update
             slot's entry in the ini file when they are dragged about the dock
             this was missed when I changed the method of updating the Ini file
             to selectively update changed slots instead of just saving the
             entire data structure. The debugging window is a hack and can
             have side effects so don't use it unless you have to.

1.30       - Added a preview button to the Application Options dialog, this
             allows the user to preview or edit the stored window position /
             size for an application in the dock.

1.40       - Bug fixes to slot dragging/saving code and some conditional 
             NT code

2.00       - Debugged code ready for release.

2.01       - Not quite debugged enough yet....

2.02       - Tidied up NT Application execution code, made it easier to add
             applications to the dock by right clicking on an empty slot, 
             entering the app name (with or without path) an select OK. The
             Runtime Dir, Icon File and full pathname are setup automatically.
             Added an About button to the Main Application Options Dialog.
             Runtime dir is checked for existance before an application is 
             started.

2.03       - Corrected wrong text in an error message.

2.03a      - Oops, I had an incorrect definition in the resource file which
             effectively stopped the Main Options "Always on Top" option
             from working.

2.05       - Added ability to scale the entire dock from x2 down to 8th size.
             Maximum Dock size is now controlled via the MaxDockSize variable
             in the [Main Options] section of the .ini file.
             Added an NT application start-up option for "Start in separate
             memory".

2.05a      - Added hand cursor when dragging slots around in the dock.
             Grabber Tool is now "Dragged-off" the Grabber Button & the user
             has the option to hide the Application Options Dialog during the 
             grabbing.
             Added support for separate .INI files for the 16 & 32 bit versions
             of FreeDock, these are called FreeDK16.ini & FreeDK32.ini.

2.5        - Restuctured all internal data to facilitate incorporation of
             sub-dock feature at a later date.
             Added ability to lock the dock to stop slots accidentally being
             dragged off the dock.
             fixed a few bugs in the 2.5beta.


Things still to be done
=======================

1) [Most important] Write the manual !

2) Consider idea for having slots which are groups, this causes the associated 
   icons to pop out at 90 degrees to the dock when the slot is selected.
   Problems : How to add/move/remove slots in a group ?
   I have tinkered around with this problem and I think that inorder to do
   it properly it will probably take a while & may be best written in C++.

3) Addability to add/remove special built-in slots in the current session, 
   i.e. don't need to restart FreeDock to get built-ins to appear. 
   [Not terribly important]

4) Discover how to implement the Max View option which would allow the dock 
   to control the maximising of other windows to enable it always to be
   visible (if selected by user).


