RFR: 8333919: dragViewOffsetX/dragViewOffsetY are ignored for the dragView image
Jose Pereda
jpereda at openjdk.org
Thu Aug 8 16:04:36 UTC 2024
On Thu, 8 Aug 2024 12:35:59 GMT, Lukasz Kostyra <lkostyra at openjdk.org> wrote:
> When fixing [JDK-8233955](https://bugs.openjdk.org/browse/JDK-8233955) offset calculation was left out, which made Dragboard offset API not work on macOS.
>
> This change fixes this mistake. Now drag image should be properly offset.
I'm testing this PR, and I see that on macOS the offsets are now taken into account.
However, comparing to Windows the behaviour is different:
- On Windows, offset 0,0 means the cursor is at the most top-left coordinates of the dragView image. Setting positive offsets in x, y goes to the right and down of the image (which goes in line with the usual JavaFX coordinate system)
- On macOS, with this PR, offset 0, 0 is at the centre of the dragView image, and positive offsets go to the opposite direction
>From the test attached to the issue, and with this PR:
WritableImage snapshot = source.snapshot(null, null);
db.setDragView(snapshot);
db.setDragViewOffsetX(0);
db.setDragViewOffsetY(0);
on Windows -> cursor at the most top-left corner of the dragView
on macOS -> cursor at the centre of the dragView.
And:
WritableImage snapshot = source.snapshot(null, null);
db.setDragView(snapshot);
db.setDragViewOffsetX(snapshot.getWidth() / 2);
db.setDragViewOffsetY(snapshot.getHeight() / 2);
on Windows -> cursor at the centre of the dragView
on macOS -> cursor at the most top-left corner of the dragView.
So I'd say macOS should do the same as Windows, and for that you could try:
- dragPoint.x -= ([image size].width/2.0f);
- dragPoint.y -= ([image size].height/2.0f);
+ // dragPoint.x -= ([image size].width/2.0f);
+ // dragPoint.y -= ([image size].height/2.0f);
- dragPoint.x += offset.x;
- dragPoint.y += offset.y;
+ dragPoint.x -= offset.x;
+ dragPoint.y -= offset.y;
Does that make sense to you?
-------------
PR Comment: https://git.openjdk.org/jfx/pull/1532#issuecomment-2276175583
More information about the openjfx-dev
mailing list