From 7f6e3ad286b86d3b06bc4c77ea62f716f72d5b59 Mon Sep 17 00:00:00 2001 From: Malik Olivier Boussejra Date: Fri, 10 Aug 2018 14:27:39 +0900 Subject: [PATCH 1/2] [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] https://github.com/Gekkio/imgui-rs/pull/139/commits/b6f5b278830b2859a748b6df520d05fa78484b48 --- imgui-examples/examples/support/mod.rs | 17 +++++------------ imgui-examples/examples/support_gfx/mod.rs | 17 +++++------------ 2 files changed, 10 insertions(+), 24 deletions(-) diff --git a/imgui-examples/examples/support/mod.rs b/imgui-examples/examples/support/mod.rs index 6ee1986..011b8f7 100644 --- a/imgui-examples/examples/support/mod.rs +++ b/imgui-examples/examples/support/mod.rs @@ -129,14 +129,11 @@ pub fn run 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 size_points = ( - (size_pixels.width as f64 / hdipi) as u32, - (size_pixels.height as f64 / hdipi) as u32, - ); + let size_pixels = size_points.to_physical(hdipi); - 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) { break; } @@ -182,11 +179,7 @@ fn configure_keys(imgui: &mut ImGui) { } 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 / scale.0, - mouse_state.pos.1 as f32 / scale.1, - ); + imgui.set_mouse_pos(mouse_state.pos.0 as f32, mouse_state.pos.1 as f32); imgui.set_mouse_down( &[ mouse_state.pressed.0, @@ -196,6 +189,6 @@ fn update_mouse(imgui: &mut ImGui, mouse_state: &mut MouseState) { false, ], ); - imgui.set_mouse_wheel(mouse_state.wheel / scale.1); + imgui.set_mouse_wheel(mouse_state.wheel); mouse_state.wheel = 0.0; } diff --git a/imgui-examples/examples/support_gfx/mod.rs b/imgui-examples/examples/support_gfx/mod.rs index 30e5060..bb198f9 100644 --- a/imgui-examples/examples/support_gfx/mod.rs +++ b/imgui-examples/examples/support_gfx/mod.rs @@ -174,14 +174,11 @@ pub fn run 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 size_points = ( - (size_pixels.width as f64 / hdipi) as u32, - (size_pixels.height as f64 / hdipi) as u32, - ); + let size_pixels = size_points.to_physical(hdipi); - 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) { break; } @@ -221,11 +218,7 @@ fn configure_keys(imgui: &mut ImGui) { } 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 / scale.0, - mouse_state.pos.1 as f32 / scale.1, - ); + imgui.set_mouse_pos(mouse_state.pos.0 as f32, mouse_state.pos.1 as f32); imgui.set_mouse_down( &[ mouse_state.pressed.0, @@ -235,6 +228,6 @@ fn update_mouse(imgui: &mut ImGui, mouse_state: &mut MouseState) { false, ], ); - imgui.set_mouse_wheel(mouse_state.wheel / scale.1); + imgui.set_mouse_wheel(mouse_state.wheel); mouse_state.wheel = 0.0; } From 1ac9c84ba290c2fd30da3b99087518ea764495a6 Mon Sep 17 00:00:00 2001 From: Malik Olivier Boussejra Date: Sat, 11 Aug 2018 06:22:22 +0900 Subject: [PATCH 2/2] [CHANGELOG] Add glium update Include a word about WINIT_HIDPI_FACTOR=1. --- CHANGELOG.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown index 6d8f66c..a4d8e5b 100644 --- a/CHANGELOG.markdown +++ b/CHANGELOG.markdown @@ -41,6 +41,9 @@ Keep redirection. - Rename `ImGuiCol::ChildWindowBg` to `ImGuiCol::ChildBg`. Keep redirection. +- Upgrade glium to 0.22.0. This updates winit to 0.16. This changes the way +HIDPI are calculated. Depending on your needs, you may want to set HIDPI to 1 +by setting the environment variable `WINIT_HIDPI_FACTOR=1` if you use X11. ### Deprecated