mirror of
https://github.com/zed-industries/zed.git
synced 2024-12-28 18:31:37 +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) {
|
pub fn render(&mut self, scene: &Scene) {
|
||||||
let layer = self.layer.clone();
|
let layer = self.layer.clone();
|
||||||
|
let drawable_size = layer.drawable_size();
|
||||||
let drawable = layer.next_drawable().unwrap();
|
let drawable = layer.next_drawable().unwrap();
|
||||||
let command_queue = self.command_queue.clone();
|
let command_queue = self.command_queue.clone();
|
||||||
let command_buffer = command_queue.new_command_buffer();
|
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.sprite_cache.set_scale_factor(scene.scale_factor());
|
||||||
self.image_cache.set_scale_factor(scene.scale_factor());
|
self.image_cache.set_scale_factor(scene.scale_factor());
|
||||||
|
|
||||||
@ -206,7 +202,7 @@ impl Renderer {
|
|||||||
scene,
|
scene,
|
||||||
path_sprites,
|
path_sprites,
|
||||||
&mut offset,
|
&mut offset,
|
||||||
drawable_size,
|
vec2f(drawable_size.width as f32, drawable_size.height as f32),
|
||||||
command_buffer,
|
command_buffer,
|
||||||
drawable.texture(),
|
drawable.texture(),
|
||||||
);
|
);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
geometry::vector::{vec2f, Vector2F},
|
geometry::vector::{vec2f, Vector2F},
|
||||||
platform::{self, mac::renderer::Renderer},
|
platform::{self, mac::renderer::Renderer},
|
||||||
Event, FontSystem, Scene,
|
Event, FontSystem, Scene, Window,
|
||||||
};
|
};
|
||||||
use cocoa::{
|
use cocoa::{
|
||||||
appkit::{
|
appkit::{
|
||||||
@ -75,7 +75,7 @@ impl StatusItem {
|
|||||||
button.setWantsBestResolutionOpenGLSurface_(YES);
|
button.setWantsBestResolutionOpenGLSurface_(YES);
|
||||||
button.setLayer(renderer.layer().as_ptr() as id);
|
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 event_handler = StrongPtr::new(msg_send![HANDLER_CLASS, alloc]);
|
||||||
let _: () = msg_send![*event_handler, init];
|
let _: () = msg_send![*event_handler, init];
|
||||||
(**event_handler)
|
(**event_handler)
|
||||||
@ -90,7 +90,18 @@ impl StatusItem {
|
|||||||
event_callback: None,
|
event_callback: None,
|
||||||
_event_handler: event_handler,
|
_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