Update to glutin 0.26.0 + winit 0.24.0 (#334)
* Update for ModifiersChanged event * Consistently use logical position and size CursorMoved gives us a PhysicalPosition, which needs to be converted to LogicalPosition to properly track the mouse movement. Change the width/height passed to be a LogicalSize instead of a PhysicalPosition, matching the LogicalPosition.
This commit is contained in:
parent
5d0fb7fa64
commit
9bc10c1100
File diff suppressed because it is too large
Load Diff
|
@ -20,7 +20,7 @@ opt-level = 1
|
|||
[dependencies]
|
||||
cfg-if = "1.0.0"
|
||||
wasm-bindgen = "0.2.69"
|
||||
glutin = "0.22.0"
|
||||
glutin = "0.26.0"
|
||||
byteorder = "1.3.4"
|
||||
serde = "1.0.118"
|
||||
serde_json = "1.0.60"
|
||||
|
@ -44,7 +44,7 @@ reqwest = { version = "0.10.10", features = [ "blocking" ]}
|
|||
|
||||
[target.'cfg(target_arch = "wasm32")'.dependencies]
|
||||
stdweb = "0.4.20"
|
||||
winit = { version = "0.20.0", features = [ "stdweb" ]}
|
||||
winit = { version = "0.24.0", features = [ "stdweb" ]}
|
||||
|
||||
[dependencies.steven_gl]
|
||||
path = "./gl"
|
||||
|
|
46
src/main.rs
46
src/main.rs
|
@ -399,13 +399,13 @@ fn main2() {
|
|||
game.console
|
||||
.lock()
|
||||
.unwrap()
|
||||
.tick(&mut ui_container, &game.renderer, delta, width as f64);
|
||||
ui_container.tick(&mut game.renderer, delta, width as f64, height as f64);
|
||||
.tick(&mut ui_container, &game.renderer, delta, width);
|
||||
ui_container.tick(&mut game.renderer, delta, width, height);
|
||||
game.renderer.tick(
|
||||
&mut game.server.world,
|
||||
delta,
|
||||
width,
|
||||
height,
|
||||
width as u32,
|
||||
height as u32,
|
||||
physical_width,
|
||||
physical_height,
|
||||
);
|
||||
|
@ -434,15 +434,11 @@ fn handle_window_event<T>(
|
|||
use glutin::event::*;
|
||||
match event {
|
||||
Event::MainEventsCleared => return true,
|
||||
Event::DeviceEvent { event, .. } => match event {
|
||||
DeviceEvent::ModifiersChanged(modifiers_state) => {
|
||||
game.is_ctrl_pressed = modifiers_state.ctrl();
|
||||
game.is_logo_pressed = modifiers_state.logo();
|
||||
}
|
||||
|
||||
DeviceEvent::MouseMotion {
|
||||
Event::DeviceEvent { event, .. } => {
|
||||
if let DeviceEvent::MouseMotion {
|
||||
delta: (xrel, yrel),
|
||||
} => {
|
||||
} = event
|
||||
{
|
||||
let (rx, ry) = if xrel > 1000.0 || yrel > 1000.0 {
|
||||
// Heuristic for if we were passed an absolute value instead of relative
|
||||
// Workaround https://github.com/tomaka/glutin/issues/1084 MouseMotion event returns absolute instead of relative values, when running Linux in a VM
|
||||
|
@ -486,12 +482,14 @@ fn handle_window_event<T>(
|
|||
window.window().set_cursor_visible(true);
|
||||
}
|
||||
}
|
||||
|
||||
_ => (),
|
||||
},
|
||||
}
|
||||
|
||||
Event::WindowEvent { event, .. } => {
|
||||
match event {
|
||||
WindowEvent::ModifiersChanged(modifiers_state) => {
|
||||
game.is_ctrl_pressed = modifiers_state.ctrl();
|
||||
game.is_logo_pressed = modifiers_state.logo();
|
||||
}
|
||||
WindowEvent::CloseRequested => game.should_close = true,
|
||||
WindowEvent::Resized(physical_size) => {
|
||||
window.resize(physical_size);
|
||||
|
@ -508,11 +506,9 @@ fn handle_window_event<T>(
|
|||
|
||||
WindowEvent::MouseInput { state, button, .. } => match (state, button) {
|
||||
(ElementState::Released, MouseButton::Left) => {
|
||||
let (width, height) = window
|
||||
.window()
|
||||
.inner_size()
|
||||
.to_logical::<f64>(game.dpi_factor)
|
||||
.into();
|
||||
let physical_size = window.window().inner_size();
|
||||
let (width, height) =
|
||||
physical_size.to_logical::<f64>(game.dpi_factor).into();
|
||||
|
||||
if game.server.is_connected()
|
||||
&& !game.focused
|
||||
|
@ -541,16 +537,14 @@ fn handle_window_event<T>(
|
|||
(_, _) => (),
|
||||
},
|
||||
WindowEvent::CursorMoved { position, .. } => {
|
||||
let (x, y) = position.into();
|
||||
let (x, y) = position.to_logical::<f64>(game.dpi_factor).into();
|
||||
game.last_mouse_x = x;
|
||||
game.last_mouse_y = y;
|
||||
|
||||
if !game.focused {
|
||||
let (width, height) = window
|
||||
.window()
|
||||
.inner_size()
|
||||
.to_logical::<f64>(game.dpi_factor)
|
||||
.into();
|
||||
let physical_size = window.window().inner_size();
|
||||
let (width, height) =
|
||||
physical_size.to_logical::<f64>(game.dpi_factor).into();
|
||||
ui_container.hover_at(game, x, y, width, height);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue