summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugingui/nativewindow_cocoa.h1
-rw-r--r--plugingui/nativewindow_cocoa.mm7
2 files changed, 7 insertions, 1 deletions
diff --git a/plugingui/nativewindow_cocoa.h b/plugingui/nativewindow_cocoa.h
index 74eb2f4..8dc73e6 100644
--- a/plugingui/nativewindow_cocoa.h
+++ b/plugingui/nativewindow_cocoa.h
@@ -72,6 +72,7 @@ private:
EventQueue event_queue;
void* native_window{nullptr};
bool first{true};
+ float scale{1.0};
};
} // GUI::
diff --git a/plugingui/nativewindow_cocoa.mm b/plugingui/nativewindow_cocoa.mm
index 90b5c70..37fae88 100644
--- a/plugingui/nativewindow_cocoa.mm
+++ b/plugingui/nativewindow_cocoa.mm
@@ -528,6 +528,8 @@ NativeWindowCocoa::NativeWindowCocoa(void* native_window, Window& window)
[priv->window setContentView:priv->view];
}
+ scale = [[NSScreen mainScreen] backingScaleFactor];
+
[priv->view setWantsLayer:YES];
[priv->view setLayerContentsPlacement:NSViewLayerContentsPlacementTopLeft];
[priv->view updateTrackingAreas];
@@ -697,9 +699,12 @@ void NativeWindowCocoa::redraw(const Rect& dirty_rect)
CGImageRef image = CGBitmapContextCreateImage(gc);
CGContextRelease(gc);
- [[priv->view layer] setContents:(__bridge id)image];
+ auto nsImage = [[NSImage alloc] initWithCGImage:image size:NSZeroSize];
+ id layerContents = [nsImage layerContentsForContentsScale:scale];
+ [[priv->view layer] setContents:layerContents];
updateLayerOffset();
+ [[priv->view layer] setContentsScale:scale];
}
void NativeWindowCocoa::setCaption(const std::string &caption)