Merge pull request #6 from slint-ui/simon/macos-scale-fix

Fix scaling of the buffer on macOS
This commit is contained in:
Mads Marquart 2022-12-21 14:34:09 +01:00 committed by GitHub
commit 25afc6e563
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 3 deletions

View file

@ -16,7 +16,10 @@ fn main() {
}).collect::<Vec<_>>();
let event_loop = EventLoop::new();
let window = WindowBuilder::new().build(&event_loop).unwrap();
let window = WindowBuilder::new()
.with_inner_size(winit::dpi::PhysicalSize::new(fruit.width(), fruit.height()))
.build(&event_loop)
.unwrap();
#[cfg(target_arch = "wasm32")]
{

View file

@ -6,7 +6,7 @@ use core_graphics::data_provider::CGDataProvider;
use core_graphics::image::CGImage;
use cocoa::base::{id, nil};
use cocoa::appkit::{NSView, NSViewWidthSizable, NSViewHeightSizable};
use cocoa::appkit::{NSView, NSViewWidthSizable, NSViewHeightSizable, NSWindow};
use cocoa::quartzcore::{CALayer, ContentsGravity};
use foreign_types::ForeignType;
@ -18,11 +18,13 @@ pub struct CGImpl {
impl CGImpl {
pub unsafe fn new(handle: AppKitWindowHandle) -> Result<Self, SwBufError> {
let window = handle.ns_window as id;
let view = handle.ns_view as id;
let layer = CALayer::new();
let subview: id = NSView::alloc(nil).initWithFrame_(view.frame());
let subview: id = NSView::alloc(nil).initWithFrame_(NSView::frame(view));
layer.set_contents_gravity(ContentsGravity::TopLeft);
layer.set_needs_display_on_bounds_change(false);
layer.set_contents_scale(window.backingScaleFactor());
subview.setLayer(layer.id());
subview.setAutoresizingMask_(NSViewWidthSizable | NSViewHeightSizable);