From 6b117074425f0da02543e53fd35b06c270da3cbc Mon Sep 17 00:00:00 2001 From: "Klare, Heiko" Date: Tue, 25 Nov 2025 14:20:20 +0100 Subject: [PATCH] [Win32] Apply accessibility setting to ImageDataProvider-based cursor Cursors are scaled according to the accessibility settings of Windows. However, this setting is only applied to Cursor instances based on image data but not on those that are instantiated via an ImageDataProvider. This change also applies the scale factor in the latter case. --- .../Eclipse SWT/win32/org/eclipse/swt/graphics/Cursor.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Cursor.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Cursor.java index 9f32841a320..57266fcb3c1 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Cursor.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Cursor.java @@ -628,11 +628,12 @@ public ImageDataProviderCursorHandleProvider(ImageDataProvider provider, int hot @Override public CursorHandle createHandle(Device device, int zoom) { ImageData source; - if (zoom == DEFAULT_ZOOM) { - source = this.provider.getImageData(DEFAULT_ZOOM); + int scaledZoom = (int) (zoom * getPointerSizeScaleFactor()); + if (scaledZoom == DEFAULT_ZOOM) { + source = this.provider.getImageData(scaledZoom); } else { Image tempImage = new Image(device, this.provider); - source = tempImage.getImageData(zoom); + source = tempImage.getImageData(scaledZoom); tempImage.dispose(); } return setupCursorFromImageData(device, source, null, getHotpotXInPixels(zoom), getHotpotYInPixels(zoom));