mirror of
https://github.com/zed-industries/zed.git
synced 2024-12-28 02:44:50 +03:00
Set contents scale and drawable size when creating status metal layer
This commit is contained in:
parent
2acd215bb8
commit
a9c2881831
@ -187,15 +187,11 @@ impl Renderer {
|
||||
|
||||
pub fn render(&mut self, scene: &Scene) {
|
||||
let layer = self.layer.clone();
|
||||
let drawable_size = layer.drawable_size();
|
||||
let drawable = layer.next_drawable().unwrap();
|
||||
let command_queue = self.command_queue.clone();
|
||||
let command_buffer = command_queue.new_command_buffer();
|
||||
|
||||
let frame: NSRect = unsafe { msg_send![self.layer(), frame] };
|
||||
let scale_factor: CGFloat = unsafe { msg_send![self.layer(), contentsScale] };
|
||||
let drawable_size =
|
||||
vec2f(frame.size.width as f32, frame.size.height as f32) * scale_factor as f32;
|
||||
|
||||
self.sprite_cache.set_scale_factor(scene.scale_factor());
|
||||
self.image_cache.set_scale_factor(scene.scale_factor());
|
||||
|
||||
@ -206,7 +202,7 @@ impl Renderer {
|
||||
scene,
|
||||
path_sprites,
|
||||
&mut offset,
|
||||
drawable_size,
|
||||
vec2f(drawable_size.width as f32, drawable_size.height as f32),
|
||||
command_buffer,
|
||||
drawable.texture(),
|
||||
);
|
||||
|
@ -1,7 +1,7 @@
|
||||
use crate::{
|
||||
geometry::vector::{vec2f, Vector2F},
|
||||
platform::{self, mac::renderer::Renderer},
|
||||
Event, FontSystem, Scene,
|
||||
Event, FontSystem, Scene, Window,
|
||||
};
|
||||
use cocoa::{
|
||||
appkit::{
|
||||
@ -75,7 +75,7 @@ impl StatusItem {
|
||||
button.setWantsBestResolutionOpenGLSurface_(YES);
|
||||
button.setLayer(renderer.layer().as_ptr() as id);
|
||||
|
||||
Self(Rc::new_cyclic(|state| {
|
||||
let item = Self(Rc::new_cyclic(|state| {
|
||||
let event_handler = StrongPtr::new(msg_send![HANDLER_CLASS, alloc]);
|
||||
let _: () = msg_send![*event_handler, init];
|
||||
(**event_handler)
|
||||
@ -90,7 +90,18 @@ impl StatusItem {
|
||||
event_callback: None,
|
||||
_event_handler: event_handler,
|
||||
})
|
||||
}))
|
||||
}));
|
||||
|
||||
{
|
||||
let item = item.0.borrow();
|
||||
let layer = item.renderer.layer();
|
||||
let scale_factor = item.scale_factor();
|
||||
let size = item.size() * scale_factor;
|
||||
layer.set_contents_scale(scale_factor.into());
|
||||
layer.set_drawable_size(metal::CGSize::new(size.x().into(), size.y().into()));
|
||||
}
|
||||
|
||||
item
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user