• Jeffrey Lee's avatar
    LineScroll scaling & smoother scrolling · a379c4e8
    Jeffrey Lee authored
    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:
    
    1. 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)
    
    2. 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.
    
    Version 0.02. Tagged as 'WindowScroll-0_02'
    a379c4e8
cmodule 7.35 KB