Skip to content

Make cursors HiDPI-aware #331

Open
0 of 1 issue completed
eclipse-platform/eclipse.platform.swt
#2271
Open
@HeikoKlare

Description

@HeikoKlare

Description
Cursors are currently not based on an image that can be properly rescaled upon DPI changes, such that the cursor image becomes blurry. This is because cursors are currently instantiated with an instance of ImageData. Whenever they are resized, that ImageData is scaled.

Cursors can well be experienced with GEF Classic, e.g., after changing zoom from 100% to 175% (the screenshot is a bit more blurry that it should be as it's taken out of a video capture, since in an ordinary screenshot the cursor is missing):
Image

Expected Behavior
Cursors shall sharply adapt to the current zoom, in particular when changing the zoom on Windows with monitor-aware scaling. It should be demonstrated with cursors in GEF.

Additional knowledge
Usually, the consumers of cursors already have a proper image or image descriptor at hand when creating the cursor. That image (descriptor) is usally capable of proper scaling, such as being base on SVGs. So existing the Cursor classes to accept an Image for initialization (instead of ImageData) might be a feasible approach.

To test with GEF, one should check out the GEF Classic repository: https://github.com/eclipse-gef/gef-classic
Then import the org.eclipse.draw2d, org.eclipse.gef and the org.eclipse.gef.examples.logic (the latter for testing) to your Eclipse development workspace and add them to the product you are testing. With the "New" wizard, you can create a logic example to test out the cursors via inserting elements, dragging and dropping etc. (see also this issue for an example):
Image

In GEF, cursors are created here and here. Those places need to be adapted to new, HiDPI-aware API of Cursor for testing the improved cusor scaling.

Sub-issues

Metadata

Metadata

Assignees

Labels

HiDPIA HiDPI-Related Issue or FeatureSWTIssue for SWTVectorIssues specifically relevant for Vector Informatik

Type

No type

Projects

Status

👀 In Review

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions