Improved scroll wheel support
RISC OS 5 scroll wheel support is currently very limited, with scrolling being one line of the window contents at a time. This can make it very painful to scroll to the bottom of a long document/web page! It also only works for certain applications.
This change would ensure scroll wheel mice are properly supported across a much wider range of applications and windows and that it performs in a more user-friendly way.
At present, support for scroll-wheel mice in RISC OS 5 is very limited. There are third-party add-ons which improve matters but what is really needed is native support in the Wimp so that scrolling the wheel can scroll window contents at some speed that is proportionate to the speed the wheel is turned.
Scroll wheel events should not be delivered by the USB stack calling
Wimp_SendMessage as at present. The USB stack does not know if it is safe to call
Wimp_SendMessage (for example, if the current application has not yet called
Wimp_Initialise or it has called
Wimp_CloseDown; there are probably other more subtle times also). There may even be a danger of corrupting the Wimp’s internal message queue if it’s done at the wrong time.
Instead, these events should be buffered, just like the other mouse buttons, and the buffer checked by the Wimp during the poll loop. These should first result in the generation of a new category of
Scroll_Request, giving applications chance to scroll by sensible amounts (e.g. for a text editor, by a reasonable number of lines). The Wimp has visibility of whether this
Scroll_Request did anything, and if not it should instead generate an appropriate
Open_Window_Request with the window scrolled by an appropriate amount – more than clicks on the window furniture scroll arrows, but less than a page.
We recommend a survey of different operating systems to see how much a click of a scroll wheel tends to scroll a window by. We also strongly recommend only scrolling the window underneath the mouse pointer, as in Mac OS and many window managers on other UNIX-like operating systems, rather than only scrolling the window with input focus even if the pointer is nowhere near it, like on Windows.
More information about the bounty scheme
Bounty scheme discussion forum