Skip to content

Commit 3a4ebc8

Browse files
committed
make scale factor available from bevy_window
1 parent 1fa488b commit 3a4ebc8

File tree

3 files changed

+18
-3
lines changed

3 files changed

+18
-3
lines changed

crates/bevy_window/src/window.rs

+12
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ pub struct Window {
4646
#[cfg(target_arch = "wasm32")]
4747
pub canvas: Option<String>,
4848
command_queue: Vec<WindowCommand>,
49+
scale_factor: f64,
4950
}
5051

5152
#[derive(Debug)]
@@ -110,6 +111,7 @@ impl Window {
110111
#[cfg(target_arch = "wasm32")]
111112
canvas: window_descriptor.canvas.clone(),
112113
command_queue: Vec::new(),
114+
scale_factor: 1.0,
113115
}
114116
}
115117

@@ -141,6 +143,16 @@ impl Window {
141143
self.height = height;
142144
}
143145

146+
#[doc(hidden)]
147+
pub fn update_scale_factor_from_backend(&mut self, scale_factor: f64) {
148+
self.scale_factor = scale_factor;
149+
}
150+
151+
#[inline]
152+
pub fn scale_factor(&self) -> f64 {
153+
self.scale_factor
154+
}
155+
144156
#[inline]
145157
pub fn title(&self) -> &str {
146158
&self.title

crates/bevy_winit/src/lib.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,7 @@ pub fn winit_runner(mut app: App) {
303303
let window_id = winit_windows.get_window_id(winit_window_id).unwrap();
304304
let window = windows.get_mut(window_id).unwrap();
305305
let size = new_inner_size.to_logical(scale_factor);
306+
window.update_scale_factor_from_backend(scale_factor);
306307
window.update_resolution_from_backend(size.width, size.height);
307308
}
308309
_ => {}
@@ -344,8 +345,8 @@ fn handle_create_window_events(
344345
let create_window_events = resources.get::<Events<CreateWindow>>().unwrap();
345346
let mut window_created_events = resources.get_mut::<Events<WindowCreated>>().unwrap();
346347
for create_window_event in create_window_event_reader.iter(&create_window_events) {
347-
let window = Window::new(create_window_event.id, &create_window_event.descriptor);
348-
winit_windows.create_window(event_loop, &window);
348+
let mut window = Window::new(create_window_event.id, &create_window_event.descriptor);
349+
winit_windows.create_window(event_loop, &mut window);
349350
let window_id = window.id();
350351
windows.add(window);
351352
window_created_events.send(WindowCreated { id: window_id });

crates/bevy_winit/src/winit_windows.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ impl WinitWindows {
1212
pub fn create_window(
1313
&mut self,
1414
event_loop: &winit::event_loop::EventLoopWindowTarget<()>,
15-
window: &Window,
15+
window: &mut Window,
1616
) {
1717
#[cfg(target_os = "windows")]
1818
let mut winit_window_builder = {
@@ -100,6 +100,8 @@ impl WinitWindows {
100100
}
101101
}
102102

103+
window.update_scale_factor_from_backend(winit_window.scale_factor());
104+
103105
self.windows.insert(winit_window.id(), winit_window);
104106
}
105107

0 commit comments

Comments
 (0)