IconHigh (and pointers) in Wimp error boxes
===========================================

Overview
--------

NC and STB builds of the Wimp feature support for the use of IconHigh to
navigate error boxes. This can also impact upon the pointer that is
used during error box display.

Spinner branch Wimps since v 3.97, and trunk Wimps v 4.01 - 4.10, have the
following functionality:

The pointer is always visible throughout error boxes: shape number 1,
programmed to ptr_default. IconHigh is activated for the duration, if and
only if the pointer shape number was 0 on entry to SWI Wimp_ReportError.
Unfortunately, if the hourglass is active on entry to the SWI, the pointer
shape is detected as 2 or 3 - even if smashing the hourglass would have
returned the pointer shape to 0; this leads to (a) IconHigh not being used
and (b) the pointer being incorrectly restored afterwards.

For comparison, the browser engages pointer shape 0 (invisible) whenever a
key is pressed, and shape 1 whenever the mouse is moved.


Changes
-------

The following behaviour will be implemented in NC / STB builds of the Wimp
in versions 4.11 onwards:

1)  IconHigh will be active unconditionally during error box display.

2)  SWI Hourglass_Smash will be called before the initial pointer shape
    is recorded.

3)  The pointer shape number will be preserved over opening of the error box.

4)  Wimp_Extend 12 will be implemented: this will (a) set the pointer to
    shape 0, and (b) flag that the Wimp should reprogram the pointer to
    shape 1 the next time that the mouse state changes (position or buttons).
    This will be called from IconHigh when it repositions the mouse
    following an arrow key keypress; the fact that OS_Word 21,3 flushes the
    mouse buffer means that the Wimp can guarantee that the next read from
    the mouse buffer will contain the state to compare future reads against.
    By placing the relevant code inside the "getmouseposn" routine,
    multi-tasking IconHigh (eg on-screen keyboards) can automatically be
    supported, as well as single-tasking IconHigh (in error boxes).



BAvison 09-Nov-1998
