app/internal/window: [macOS] fix window sizes for unit.Px values

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2020-06-07 17:49:04 +02:00
parent 8761550839
commit d86f96503f
2 changed files with 10 additions and 2 deletions
+6 -2
View File
@@ -35,6 +35,7 @@ __attribute__ ((visibility ("hidden"))) void gio_main(void);
__attribute__ ((visibility ("hidden"))) CGFloat gio_viewWidth(CFTypeRef viewRef);
__attribute__ ((visibility ("hidden"))) CGFloat gio_viewHeight(CFTypeRef viewRef);
__attribute__ ((visibility ("hidden"))) CGFloat gio_getViewBackingScale(CFTypeRef viewRef);
__attribute__ ((visibility ("hidden"))) CGFloat gio_getScreenBackingScale(void);
__attribute__ ((visibility ("hidden"))) CFTypeRef gio_readClipboard(void);
__attribute__ ((visibility ("hidden"))) void gio_writeClipboard(unichar *chars, NSUInteger length);
__attribute__ ((visibility ("hidden"))) void gio_setNeedsDisplay(CFTypeRef viewRef);
@@ -298,10 +299,13 @@ func NewWindow(win Callbacks, opts *Options) error {
errch <- err
return
}
// Window sizes is in unscaled screen coordinates, not device pixels.
cfg := configFor(1.0)
screenScale := float32(C.gio_getScreenBackingScale())
cfg := configFor(screenScale)
width := cfg.Px(opts.Width)
height := cfg.Px(opts.Height)
// Window sizes is in unscaled screen coordinates, not device pixels.
width = int(float32(width) / screenScale)
height = int(float32(height) / screenScale)
title := C.CString(opts.Title)
defer C.free(unsafe.Pointer(title))
errch <- nil
+4
View File
@@ -77,6 +77,10 @@ CGFloat gio_viewWidth(CFTypeRef viewRef) {
return [view bounds].size.width;
}
CGFloat gio_getScreenBackingScale(void) {
return [NSScreen.mainScreen backingScaleFactor];
}
CGFloat gio_getViewBackingScale(CFTypeRef viewRef) {
NSView *view = (__bridge NSView *)viewRef;
return [view.window backingScaleFactor];