Skip to content

Scroll acceleration does not adapt correctly near screen boundaries #12

Description

@efilo1

I've noticed an issue with how scroll acceleration behaves near the top and bottom of the screen.

The current gradual acceleration behaviour is good. The smooth ramp up to the configured maximum speed feels natural. However, the acceleration calculation does not seem to adapt correctly when the cursor starts close to a screen boundary.

For example, if my mouse cursor is already positioned near the bottom edge of the screen and I begin scrolling downward, there is almost no remaining screen space available for acceleration. Despite that, ScrollApp still appears to calculate the speed increase as if a full movement range exists.

As a result, downward scrolling feels slower and never reaches its intended behaviour because there is not enough distance left for the acceleration curve to complete properly.

A way to visualise it:

Think of acceleration like a plane taking off on a runway. If the plane starts very close to the end of the runway, it should adapt and accelerate more aggressively while still maintaining a smooth transition. Currently, it feels as if the application expects the entire runway to still be available.

Expected behaviour:

If the cursor starts near the top or bottom of the screen, the acceleration curve should dynamically scale to the remaining available space while preserving the smooth feel.

Current behaviour:

• Scroll acceleration assumes a larger movement range than is actually available
• Starting near screen boundaries prevents scrolling from behaving as intended
• Maximum configured speed becomes harder or impossible to reach naturally

I think the acceleration should be normalised relative to the remaining distance available in that direction rather than using an absolute screen position.

Thanks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions