There have been a considerable number of bug fixes to the terminal manager since 4.616 was first released. Some faults fixed are specific to 4.616, others are in all 4.6xx versions.
(Added 21 March 2000). The terminal manager could GPF displaying a pulldown menu on an action bar if it contained hooks for secondary pulldowns. This could cause QABUTIL to crash when the Find menu was opened. (4.616)
(Added 20 March 2000). The terminal manager displayed the wrong bitmap or icon if you asked to display an icon or bitmap which has a name which matches the start of the name of an icon or bitmap already loaded. For example you cannot display "BITMAP" if "BITMAP1" is already loaded. (4.6xx)
Attempting to print using DFPRINT when there was no printer installed for Windows to use caused a GPF. Switching between printing to DFPRINT and printing to a file, and then back to DFPRINT again caused a FAIL error. (4.616)
The NULL_FORBIDDEN flag, when passed in scrn_flags caused impm_n() to separate thousands after the decimal point. (4.6xx)
Messages displayed with sys_request() caused any map on screen with the same number to be cleared. This bug was also in 4.5xx.
When insert mode is on it was annoyingly difficult to enter numbers after a decimal point. The terminal manager now lets digits fall off the end instead of beeping. (4.6xx)
If a program's screen size was set by rows=xx, cols=xx in datafit.ini then this information got lost if the user changed the appearance of the desktop. (4.616)
field_colour() did not work on radio buttons - it only set one radio button instead of all the buttons in a group. (4.6xx)
For compatibility with 4.5xx the terminal manager tries to increase the size of controls if an application called field_force_size(). If the control has a prompt or spinner button this caused problems because the button is not moved. The size is no longer changed for such controls.(4.6xx)
When a menu with pulldowns was active, and the first pulldown was opened the terminal manager refused to highlight the first option until the mouse moved away from it and back onto it. This might be confusing to the user.(4.616)
The terminal manager modified the size and shape of maps attached to the menu bar. It no longer does this if the run time type indicates it is not a menu. Similarly, it also modified the font of maps attached to maps that had dynamically been changed to use one the standard fonts (e.g. the message or menu font). It no longer does this if the attached map has an explicit font setting. (4.6xx)
The recently introduced libtype 4 setting (which is now used by all the standard DP4 programs) did not handle the field_force_range() function correctly - if input was repeated because of a cursor movement, the validation range for the field was erroneously set back to the default. (4.616)
The useframe entry in the [trmw] section of datafit.ini (intended to control whether or not the "client edge window" was used) was working the wrong way round on Windows 95 UI type versions of Windows and not at all on Windows 3.x. This entry now works as advertised in the 4.616 release notes.
An attempt to use a spinner button to change the value of a numeric field to outside the valid range was not handled correctly. There was a similar long standing problem that would arise if you attempted to enter data into a numeric field for which the highest permitted value was negative - if the data was 0 initially entering any data would cause a hang. In fact the program went into a strange state where it was hung, but still responded to Windows messages, making it unusually difficult to kill off.
VCR colour schemes for auto-created prompt buttons and spinners on edit controls were being taken from the system database and not the application database.
Sticky buttons were not painted right in the ON (down) state. In fact sticky buttons are rather hard to use in 4.616 as they can't be used as normal Boolean input fields. You have to keep track yourself of whether they are up or down. In order to make this a bit easier 4.617 will support a sticky button bit for checkboxes, and show_y() can be used to set the state of regular sticky buttons.
The useframe=0 mode of operation, where there is no child window for all the maps to live in, caused major problems if you try to scroll the screen when the program window is too small for the maps to display fully. The terminal manager tries to keep an application menu bar map in place and scrolls the other maps up under it. This permanently damages the maps that scroll under as the alignment of the controls in affected maps is ruined. This is a long standing bug in fact as the useframe=0 mode is just the standard mode of operation prior to 4.616. This has been fixed as follows:
useframe=1 remains standard mode of operation where there is support for client edge (i.e. Windows 95 and Windows NT 4 or later), and there is room for a client edge and normal windows frame round the application window, (usually. at 800*600 resolution using small fonts, and 1024*7068 with large fonts, if you have cols=80 in [trmw] and are using the system font as the default DP4 font)
In the useframe=0 mode of operation the terminal manger now creates a child window of the main application window in the same way as where client edge is turned on, but without the "client edge". This is now the default mode of operation where there is no client edge.
You can specify useframe=-1 if you have to disable the creation of the child window. The only reason you would do this is if you had subclassed the terminal manager in a previously written application and the default mode of operation caused problems which you could not resolve. In this mode the menu bar will no longer stay on screen if the user scrolls the main window.
The algorithm in the terminal manager for creating scroll bars when the application window is resized so that some maps are no longer totally visible has been refined to stop them being created when they are not really necessary. Normally the terminal manager likes to keep a small "buffer zone" of two pixels of empty space round any map with a 3d border, and 1 pixel with a flat border. This helps to make the border stand out when the map is near something else, or the edge of the application window. Previously the terminal manager counted this buffer zone as part of the area that had to be visible, which sometimes resulted in a scroll bar being created because of a pop-up map appearing right at the edge of the screen. It now only counts the buffer zone when a scroll bar is necessary anyway.
This makes it possible to have framed maps that go right up to the edge of the screen, and also makes it more likely that help messages can be displayed with "status bar" appearance. In particular it allow you to design an application where the status bar goes right up to the bottom of the main map, which can give a very nice appearance.
Where the version affected is given as 4.5xx or 4.6xx, all versions of DP4 issued prior to the date of the fix are potentially affected. Where a specific version number is given the problem was introduced by that release and prior releases are unaffected. If a patch release number is also specified (in parentheses) , the fault was introduced at that specific patch level.
Due to limitations on available web space downloadable fixes are only available for the most commonly used environments, and may not be separately available in both 4.5xx and 4.6xx flavours. If a file you require is not available you can ask us to e-mail it to you.