[examples] support: Fix scale bug

The new version of glutin apparently changed the behaviour regarding
HDIPI.
Thanks to the patch submitted by semtexzv [1], this commit fixes the
issue.

[1] b6f5b27883
This commit is contained in:
Malik Olivier Boussejra 2018-08-10 14:27:39 +09:00
parent b8baa828a9
commit 7f6e3ad286
2 changed files with 10 additions and 24 deletions

View File

@ -129,14 +129,11 @@ pub fn run<F: FnMut(&Ui) -> bool>(title: String, clear_color: [f32; 4], mut run_
}); });
} }
let size_pixels = gl_window.get_inner_size().unwrap(); let size_points = gl_window.get_inner_size().unwrap();
let hdipi = gl_window.get_hidpi_factor(); let hdipi = gl_window.get_hidpi_factor();
let size_points = ( let size_pixels = size_points.to_physical(hdipi);
(size_pixels.width as f64 / hdipi) as u32,
(size_pixels.height as f64 / hdipi) as u32,
);
let ui = imgui.frame(size_points, size_pixels.into(), delta_s); let ui = imgui.frame(size_points.into(), size_pixels.into(), delta_s);
if !run_ui(&ui) { if !run_ui(&ui) {
break; break;
} }
@ -182,11 +179,7 @@ fn configure_keys(imgui: &mut ImGui) {
} }
fn update_mouse(imgui: &mut ImGui, mouse_state: &mut MouseState) { fn update_mouse(imgui: &mut ImGui, mouse_state: &mut MouseState) {
let scale = imgui.display_framebuffer_scale(); imgui.set_mouse_pos(mouse_state.pos.0 as f32, mouse_state.pos.1 as f32);
imgui.set_mouse_pos(
mouse_state.pos.0 as f32 / scale.0,
mouse_state.pos.1 as f32 / scale.1,
);
imgui.set_mouse_down( imgui.set_mouse_down(
&[ &[
mouse_state.pressed.0, mouse_state.pressed.0,
@ -196,6 +189,6 @@ fn update_mouse(imgui: &mut ImGui, mouse_state: &mut MouseState) {
false, false,
], ],
); );
imgui.set_mouse_wheel(mouse_state.wheel / scale.1); imgui.set_mouse_wheel(mouse_state.wheel);
mouse_state.wheel = 0.0; mouse_state.wheel = 0.0;
} }

View File

@ -174,14 +174,11 @@ pub fn run<F: FnMut(&Ui) -> bool>(title: String, clear_color: [f32; 4], mut run_
}); });
} }
let size_pixels = window.get_inner_size().unwrap(); let size_points = window.get_inner_size().unwrap();
let hdipi = window.get_hidpi_factor(); let hdipi = window.get_hidpi_factor();
let size_points = ( let size_pixels = size_points.to_physical(hdipi);
(size_pixels.width as f64 / hdipi) as u32,
(size_pixels.height as f64 / hdipi) as u32,
);
let ui = imgui.frame(size_points, size_pixels.into(), delta_s); let ui = imgui.frame(size_points.into(), size_pixels.into(), delta_s);
if !run_ui(&ui) { if !run_ui(&ui) {
break; break;
} }
@ -221,11 +218,7 @@ fn configure_keys(imgui: &mut ImGui) {
} }
fn update_mouse(imgui: &mut ImGui, mouse_state: &mut MouseState) { fn update_mouse(imgui: &mut ImGui, mouse_state: &mut MouseState) {
let scale = imgui.display_framebuffer_scale(); imgui.set_mouse_pos(mouse_state.pos.0 as f32, mouse_state.pos.1 as f32);
imgui.set_mouse_pos(
mouse_state.pos.0 as f32 / scale.0,
mouse_state.pos.1 as f32 / scale.1,
);
imgui.set_mouse_down( imgui.set_mouse_down(
&[ &[
mouse_state.pressed.0, mouse_state.pressed.0,
@ -235,6 +228,6 @@ fn update_mouse(imgui: &mut ImGui, mouse_state: &mut MouseState) {
false, false,
], ],
); );
imgui.set_mouse_wheel(mouse_state.wheel / scale.1); imgui.set_mouse_wheel(mouse_state.wheel);
mouse_state.wheel = 0.0; mouse_state.wheel = 0.0;
} }