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).