Skip to content

[Win32] Cursor size not updated when accessibility setting changes #2833

@HeikoKlare

Description

@HeikoKlare

Describe the bug
When changing the cursor size in the Windows accessibility settings, the sizes of already created cursors (i.e., those that have already been instantiated for a specific monitor zoom) will not be updated for that zoom anymore and stick to the existing accessibility setting instead. This is caused by the cursor handle cache only taking the monitor zoom but not the accessibility zoom into account. See #2811 (review) from @ptziegler.

To Reproduce

  • Open Snippet386 and choose one of the constructors using ImageData (or with [Win32] Apply accessibility setting to ImageDataProvider-based cursor #2811 you can also use the one using ImageDataProvider)
  • Hover over the "Scale" area once such that the cursor appears
  • Change the accessibility settings of your system to use a different cursor size
  • Hover over the "Scale" area again

You will see that the cursor still has the "old" size (i.e., without the accessibility setting change) when hovering over that area.

Expected behavior
Cursor sizes should dynamically adapt to changed accessibility settings.

Environment:

  1. Select the platform(s) on which the behavior is seen:
    • All OS
    • Windows
    • Linux
    • macOS

Workaround (or) Additional context
Restarting the application or resetting the context in which the cursor was created helps. But since, e.g., in GEF Classic such cusors are static/shared, you have to restart the application.

What would probably solve the issue is to simply use monitorZoom * accessibilityZoom as key for the Cursor handle cache.

Metadata

Metadata

Assignees

No one assigned

    Labels

    WindowsHappens on Windows OS

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions