Update winit to 0.20
This commit is contained in:
parent
4e9e051caa
commit
fb4a7968ca
7 changed files with 92 additions and 71 deletions
|
|
@ -138,10 +138,7 @@ pub trait Application: Sized {
|
|||
|
||||
window_builder = window_builder
|
||||
.with_title(&title)
|
||||
.with_inner_size(winit::dpi::LogicalSize {
|
||||
width: f64::from(width),
|
||||
height: f64::from(height),
|
||||
})
|
||||
.with_inner_size(winit::dpi::LogicalSize { width, height })
|
||||
.with_resizable(settings.window.resizable)
|
||||
.with_decorations(settings.window.decorations)
|
||||
.with_fullscreen(conversion::fullscreen(
|
||||
|
|
@ -161,18 +158,22 @@ pub trait Application: Sized {
|
|||
window_builder.build(&event_loop).expect("Open window")
|
||||
};
|
||||
|
||||
let dpi = window.hidpi_factor();
|
||||
let mut size = window.inner_size();
|
||||
let mut scale_factor = window.scale_factor();
|
||||
let mut size = window.inner_size().to_logical::<f64>(scale_factor);
|
||||
let mut resized = false;
|
||||
|
||||
let clipboard = Clipboard::new(&window);
|
||||
let mut renderer = Self::Renderer::new(renderer_settings);
|
||||
|
||||
let mut target = {
|
||||
let (width, height) = to_physical(size, dpi);
|
||||
let (width, height) = to_physical(size, scale_factor);
|
||||
|
||||
<Self::Renderer as window::Renderer>::Target::new(
|
||||
&window, width, height, dpi as f32, &renderer,
|
||||
&window,
|
||||
width,
|
||||
height,
|
||||
scale_factor as f32,
|
||||
&renderer,
|
||||
)
|
||||
};
|
||||
|
||||
|
|
@ -191,6 +192,7 @@ pub trait Application: Sized {
|
|||
let mut cache = Some(user_interface.into_cache());
|
||||
let mut events = Vec::new();
|
||||
let mut mouse_cursor = MouseCursor::OutOfBounds;
|
||||
let mut modifiers = winit::event::ModifiersState::default();
|
||||
debug.startup_finished();
|
||||
|
||||
window.request_redraw();
|
||||
|
|
@ -303,13 +305,12 @@ pub trait Application: Sized {
|
|||
debug.render_started();
|
||||
|
||||
if resized {
|
||||
let dpi = window.hidpi_factor();
|
||||
let (width, height) = to_physical(size, dpi);
|
||||
let (width, height) = to_physical(size, scale_factor);
|
||||
|
||||
target.resize(
|
||||
width,
|
||||
height,
|
||||
window.hidpi_factor() as f32,
|
||||
scale_factor as f32,
|
||||
&renderer,
|
||||
);
|
||||
|
||||
|
|
@ -337,18 +338,21 @@ pub trait Application: Sized {
|
|||
..
|
||||
} => match window_event {
|
||||
WindowEvent::Resized(new_size) => {
|
||||
size = new_size.to_logical(scale_factor);
|
||||
|
||||
events.push(Event::Window(window::Event::Resized {
|
||||
width: new_size.width.round() as u32,
|
||||
height: new_size.height.round() as u32,
|
||||
width: size.width.round() as u32,
|
||||
height: size.height.round() as u32,
|
||||
}));
|
||||
|
||||
size = new_size;
|
||||
resized = true;
|
||||
}
|
||||
WindowEvent::CloseRequested => {
|
||||
*control_flow = ControlFlow::Exit;
|
||||
}
|
||||
WindowEvent::CursorMoved { position, .. } => {
|
||||
let position = position.to_logical::<f64>(scale_factor);
|
||||
|
||||
events.push(Event::Mouse(mouse::Event::CursorMoved {
|
||||
x: position.x as f32,
|
||||
y: position.y as f32,
|
||||
|
|
@ -397,7 +401,6 @@ pub trait Application: Sized {
|
|||
winit::event::KeyboardInput {
|
||||
virtual_keycode: Some(virtual_keycode),
|
||||
state,
|
||||
modifiers,
|
||||
..
|
||||
},
|
||||
..
|
||||
|
|
@ -427,8 +430,20 @@ pub trait Application: Sized {
|
|||
WindowEvent::HoveredFileCancelled => {
|
||||
events.push(Event::Window(window::Event::FilesHoveredLeft));
|
||||
}
|
||||
WindowEvent::ScaleFactorChanged {
|
||||
scale_factor: new_scale_factor,
|
||||
..
|
||||
} => {
|
||||
scale_factor = new_scale_factor;
|
||||
}
|
||||
_ => {}
|
||||
},
|
||||
event::Event::DeviceEvent {
|
||||
event: event::DeviceEvent::ModifiersChanged(new_modifiers),
|
||||
..
|
||||
} => {
|
||||
modifiers = new_modifiers;
|
||||
}
|
||||
_ => {
|
||||
*control_flow = ControlFlow::Wait;
|
||||
}
|
||||
|
|
@ -440,7 +455,7 @@ fn build_user_interface<'a, A: Application>(
|
|||
application: &'a mut A,
|
||||
cache: Cache,
|
||||
renderer: &mut A::Renderer,
|
||||
size: winit::dpi::LogicalSize,
|
||||
size: winit::dpi::LogicalSize<f64>,
|
||||
debug: &mut Debug,
|
||||
) -> UserInterface<'a, A::Message, A::Renderer> {
|
||||
debug.view_started();
|
||||
|
|
@ -459,12 +474,12 @@ fn build_user_interface<'a, A: Application>(
|
|||
user_interface
|
||||
}
|
||||
|
||||
fn to_physical(size: winit::dpi::LogicalSize, dpi: f64) -> (u16, u16) {
|
||||
let physical_size = size.to_physical(dpi);
|
||||
fn to_physical(size: winit::dpi::LogicalSize<f64>, dpi: f64) -> (u32, u32) {
|
||||
let physical_size = size.to_physical::<f64>(dpi);
|
||||
|
||||
(
|
||||
physical_size.width.round() as u16,
|
||||
physical_size.height.round() as u16,
|
||||
physical_size.width.round() as u32,
|
||||
physical_size.height.round() as u32,
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -74,10 +74,10 @@ pub fn modifiers_state(
|
|||
modifiers: winit::event::ModifiersState,
|
||||
) -> ModifiersState {
|
||||
ModifiersState {
|
||||
shift: modifiers.shift,
|
||||
control: modifiers.ctrl,
|
||||
alt: modifiers.alt,
|
||||
logo: modifiers.logo,
|
||||
shift: modifiers.shift(),
|
||||
control: modifiers.ctrl(),
|
||||
alt: modifiers.alt(),
|
||||
logo: modifiers.logo(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue