From 611c15953e8297ac1762abfb5aeca6665985fc0f Mon Sep 17 00:00:00 2001 From: Ken Thomases Date: Mon, 31 Jul 2017 14:44:08 -0500 Subject: [PATCH] winemac: Scale cursors for Retina mode, now that user32 scales them with DPI. When they were always 32x32, treating that size as though it were in Cocoa's virtual "points" rather than pixels produced good results even though it wasn't really correct. Signed-off-by: Ken Thomases Signed-off-by: Alexandre Julliard --- dlls/winemac.drv/cocoa_app.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dlls/winemac.drv/cocoa_app.m b/dlls/winemac.drv/cocoa_app.m index 2cf67f17ffc..46176f77f99 100644 --- a/dlls/winemac.drv/cocoa_app.m +++ b/dlls/winemac.drv/cocoa_app.m @@ -992,12 +992,14 @@ - (void) setCursor { NSDictionary* frame = [cursorFrames objectAtIndex:cursorFrame]; CGImageRef cgimage = (CGImageRef)[frame objectForKey:@"image"]; - NSImage* image = [[NSImage alloc] initWithCGImage:cgimage size:NSZeroSize]; + CGSize size = CGSizeMake(CGImageGetWidth(cgimage), CGImageGetHeight(cgimage)); + NSImage* image = [[NSImage alloc] initWithCGImage:cgimage size:NSSizeFromCGSize(cgsize_mac_from_win(size))]; CFDictionaryRef hotSpotDict = (CFDictionaryRef)[frame objectForKey:@"hotSpot"]; CGPoint hotSpot; if (!CGPointMakeWithDictionaryRepresentation(hotSpotDict, &hotSpot)) hotSpot = CGPointZero; + hotSpot = cgpoint_mac_from_win(hotSpot); self.cursor = [[[NSCursor alloc] initWithImage:image hotSpot:NSPointFromCGPoint(hotSpot)] autorelease]; [image release]; [self unhideCursor];