965.6.1 XTREE, XTEXT
Reinstate lost timeout support in XTREE and XTEXT.
965.6.2 SORTIT
SORTIT.SBR now preserves the order of items with equal keys. Also, make same correction to direct memory sorting (of files in MEM:) in BASORT. (All other BASORT modes have been preserving order of recs with equal keys since 4.7)
965.6.3 INFLD
Fix INFLD mode 28 (reformat with no display or input); was broken since 4.9.905.
965.6.4 GUI
Reinstate tooltips (broken in 964.1)
965.4.1 AUI_EVENTWAIT
AUI_EVENTWAIT now returns exitcodes for:
HOME (-45)
END (-46)
DEL (-47)
(These match the handling of these keys in XTREE.)
965.4.2 AUI_WINDOW
AUI_WINDOW supports 3 new params. The new complete syntax is:
xcall AUI,AUI_WINDOW, flg {,l, t, r, b {,rows, cols {,tsts, bsts {cid, hg, vg}}}}
Where the new parameters (cid, hg, vg) are applicable only when flg = -1 (i.e. for query mode):
cid (numeric)
If 0, information is returned about the main window (as before). If -1, the screen resolution (in pixel units) is returned in the hg and vg parameters. (The other return values are not applicable when cid = -1.) If >0, then returned information will be based on the specified control number rather than the main window.
You can use this mode (cid > 0) to get information about the size and position of a specific control. Although the AUI_CONTROL opcode CTLOP_INFO also does this, AUI_WINDOW returns more detailed information relating to the current absolute position and size of the control relative to the desktop, whereas CTLOP_INFO only returns the logical coordinates as there were specified when the control was created. The difference is particularly significant for dialogs, which can be moved around, and for certain complex controls, like the calendar or animation controls, which may ignore or override the size information used to create them. AUI_WINDOW also returns information about the grid units.
hg, vg (numeric, horizontal and vertical grid units)
When cid = -1, these return the screen resolution in pixels. Otherwise, they return the grid size, in universal units (0-10000) of the specified window or control. You can compare these grid values to the values returned in the l,t,r,b (left, top, right, bottom) coordinates to determine sizes and positions in terms of row/column units.
Note that when cid=0 (main window), the rows and columns parameters return the defined number of rows and columns in the main window. But when cid > 0, they return the size of the target control in millirows and columns.
The AUIWIN sample program (in 908,28) has been upgraded to illustrate the new parameters, although to test out the cid > 0 option, you'll first need to run some other program which creates controls and leaves them on the screen. Then run AUIWIN, and consult the control dump to get the control id numbers you want to query.
965.4.3 GUI
INFLD now supports a "self-service date picker". The concept is similar to the self-service combo (where you put "..." in the SETDEF parameter and it returns EXITCODE 29 when you attempt to display the drop-down), except here you activate it by adding TYPE ||v to the date type codes. Presumably this might be useful in cases where you like the look of the edit portion of the date picker, but want to display a more specialized calendar when the user clicks the drop-down button.
965.4.1
Fix a memory corruption problem when you attempted to copy text from the debug window to the clipboard more than one time.
965.4.5 AUI_CONTROL
XCALL AUI_CONTROL, CTLOP_INFO was failing to return several parameters.
965.4.6 AUI_CONTROL
XCALL AUI_CONTROL, CTLOP_CHG supports two additional new flags:
MBST_CHANGEX (&h00040000)
MBST_SELECT (&h00080000)
MBST_CHANGEX is related to MBST_CHANGE, MBST_POS and MBST_STYLE and affects those attributes (like font, color, etc.) that were not covered by the other bits. (Changing tooltip is not yet implemented, but will be part of this.)
MBST_SELECT "selects" the control if the control has the design mode flag set. (Just ignore this comment as "design mode" is a long way from being usable.) Note that to unselect a control, use CTLOP_CHG with MBST_CHANGE and don't specify the MBST_SELECT flag.
965.3.1 RENAME
Fix: a recent update to RENAME.SBR was causing it to substitute an extension of ZZZ in the target filename if no extension was specified.
965.3.2 XTREE
Fix: XTREE was resizing the first column to fill the entire width of the tree when using opcode 1 and XTF_NOREDRAW.
965.2.1 AUI
Preliminary support for adding menus to dialogs. This is accomplished by using the AUI_MENU function and adding the dialog id to the end of either form of the calling syntax:
xcall AUI, AUI_MENU, opcode, menuid, txt, state, type, cmd, func, status {,dlgid}
xcall AUI, AUI_MENU, opcode, mdfspec, state, status {,dlgid}
Notes
• | The menu takes up the space that would have been occupied by the first logical row of the dialog. (So if planning to add a dialog menu, don't try to use row 1 for other display purposes.) |
• | Currently it is not possible to delete the menu, once added. (In general, you would probably just delete the dialog.) |
• | The dialog display does not get automatically refreshed to show the newly added menu. To force this to happen after you have added all of your menu items, use AUI_MENU with opcode 6: |
XCALL AUI, AUI_MENU, 6, 0, "", 0, 0, "", "", STATUS, DLGID
This will increase the height of the dialog to allow for the spaced used by the newly added menu, and will force the menu to be displayed.
965.1.1 GUI
Fix problem introduced in 965 interfering with ability to drag dialogs around.
965.1.2 xcall RENAME
Fix a problem introduced in 958.2 to support renaming of files with no extension. Turns out some people were quite fond of the quaint notion of using a name like "DUMB" to refer to a file actually named "DUMB.DAT". So the new rule is: if the input filespec contains no period, then the default extension of DAT applies (as in days of old). If you want no extension, then specify a filespec with a trailing period.
965.1.3 GUI
Fix problem introduced in 965 in which controls explicitly specifying the Window class "STATIC" were not displaying in dialogs.
965.0.1 XTREE
XTREE now supports a split (or dual-pane) mode, allowing two sets of columns to be scrolled horizontally independently. This is typically useful when you have a lot of columns (so horizontal scrolling is needed) but you want one, or perhaps a few columns to always be visible. By putting those columns in the left pane, they will be immune to the horizontal scrolling taking place in the right pane.
To activate, a new FLAGS bit has been defined: XTF_SPLIT (&h20000000). Also, two new fields in the XTRCTL structure, the end of which now looks like this:
MAP2 XTR'USECOLORDER,B,1 ! [114] use COLORDER() to reorder?
MAP2 XTR'COLORDER(31),B,1 ! [114] a(x) = real column # for display column x
MAP2 XTR'TIMEOUT,B,4 ! [115] timeout (ms) (exitcode=11)
MAP2 XTR'LEFTPANECOLS,B,1 ! [116] (XTF_SPLIT) # cols in left pane
MAP2 XTR'LEFTPANEWIDTH,B,1 ! [116] (XTF_SPLIT) width of left pane
! 0=optimize, -1=50/50, else column units
MAP2 XTR'UNUSED2,X,26 ! [116]
XTR'LEFTPANECOLS specifies the number of columns to be in the left pane. Note that this counts physical columns that have a non-zero data width, whether or not the column is hidden, and it is based on the order in which they are defined in the COLDEF parameter (not necessarily the order they appear in the physical input data.) So columns which use cpos and cwidth of 0 do not count, but all other columns do (including the special column needed for multi-level support, hidden color columns, etc.)
XTR'LEFTPANEWIDTH may optionally specify a display with for the left pane, using the same column units used by the Dspwid parameter (for defining column widths). If zero, then XTREE will try to determine the optimum width by adding up the optimum display widths of the initially visible rows. You can also set it to -1 (or 255) to put the splitter bar separating the panes exactly in the middle of the XTREE. If you specify a size that is too wide the left pane will initially occupy the entire XTREE, but the user will still be able to move the splitter bar from the right edge to make the right pane visible.
Notes
• | In most other respects, the dual pane mode should act just like the regular, single-pane mode. Both panes remain vertically synchronized at all times. However, in editable mode, there is currently an assumption that you would probably confine the editable cells to the right pane, and thus the editable cell navigation operates on this principle, although you could still select an editable cell in the left pane with the mouse. |
• | Two sample programs are available: XTRA2S is a variation of XTRA2, with the zip column in the left pane by itself. XTRA5 has been upgraded to offer an option of how many columns, if any, to put in the left pane. (If none, it works as before in single-pane mode.) |
965.0.2 ATE
The initial time delay before the demo mode warning appears has been increased from 30 seconds to 90 seconds, to give people with very slow connections or typing skills more time to get logged in (and acquire the server license) without being nagged.