LineScroll scaling & smoother scrolling
When performing a scroll operation, the previous version of the module would send all the scroll requests at once, causing the target to instantly jump to the new position. This new version will split the operation multiple chunks (with calls to Wimp_Poll / Wimp_PollIdle inbetween), which allows for:
-
The scroll speed/scale factor to be applied when normal "scroll" wimp messages are used (i.e. "line scroll" option is enabled). This was effectively impossible to support in the previous version, because it requires the module to send a scroll request to the target task, wait for the target to have acted on it (i.e. wait for the next null poll), and then read the window state to determine how far it scrolled (so that future scroll requests can use that value to judge how many scroll requests must be sent to get the desired motion)
-
Smooth (ish) scrolling for all scroll methods. Currently the code will attempt to scroll by one half of the remaining distance, per centisecond. This is enough for the motion to be visible to the user, while still fast enough to keep the desktop responsive.