mirror of
https://github.com/eliasstepanik/imgui-rs.git
synced 2026-01-13 22:48:34 +00:00
Merge pull request #291 from aloucks/update_winit
Update winit to 0.20.0
This commit is contained in:
commit
509a9ce1f2
@ -15,7 +15,7 @@ travis-ci = { repository = "Gekkio/imgui-rs" }
|
||||
[dependencies]
|
||||
imgui = { version = "0.3.0-pre", path = "../" }
|
||||
winit-19 = { version = ">= 0.16, <= 0.19", package = "winit", optional = true }
|
||||
winit-20 = { version = "0.20.0-alpha3", package = "winit", optional = true }
|
||||
winit-20 = { version = "0.20.0", package = "winit", optional = true }
|
||||
|
||||
[features]
|
||||
default = ["winit-19"]
|
||||
|
||||
@ -207,11 +207,11 @@ impl WinitPlatform {
|
||||
/// * display size is set
|
||||
#[cfg(feature = "winit-20")]
|
||||
pub fn attach_window(&mut self, io: &mut Io, window: &Window, hidpi_mode: HiDpiMode) {
|
||||
let (hidpi_mode, hidpi_factor) = hidpi_mode.apply(window.hidpi_factor());
|
||||
let (hidpi_mode, hidpi_factor) = hidpi_mode.apply(window.scale_factor());
|
||||
self.hidpi_mode = hidpi_mode;
|
||||
self.hidpi_factor = hidpi_factor;
|
||||
io.display_framebuffer_scale = [hidpi_factor as f32, hidpi_factor as f32];
|
||||
let logical_size = window.inner_size();
|
||||
let logical_size = window.inner_size().to_logical(hidpi_factor);
|
||||
let logical_size = self.scale_size_from_winit(window, logical_size);
|
||||
io.display_size = [logical_size.width as f32, logical_size.height as f32];
|
||||
}
|
||||
@ -239,11 +239,15 @@ impl WinitPlatform {
|
||||
/// This utility function is useful if you are using a DPI mode other than default, and want
|
||||
/// your application to use the same logical coordinates as imgui-rs.
|
||||
#[cfg(feature = "winit-20")]
|
||||
pub fn scale_size_from_winit(&self, window: &Window, logical_size: LogicalSize) -> LogicalSize {
|
||||
pub fn scale_size_from_winit(
|
||||
&self,
|
||||
window: &Window,
|
||||
logical_size: LogicalSize<f64>,
|
||||
) -> LogicalSize<f64> {
|
||||
match self.hidpi_mode {
|
||||
ActiveHiDpiMode::Default => logical_size,
|
||||
_ => logical_size
|
||||
.to_physical(window.hidpi_factor())
|
||||
.to_physical::<f64>(window.scale_factor())
|
||||
.to_logical(self.hidpi_factor),
|
||||
}
|
||||
}
|
||||
@ -272,12 +276,12 @@ impl WinitPlatform {
|
||||
pub fn scale_pos_from_winit(
|
||||
&self,
|
||||
window: &Window,
|
||||
logical_pos: LogicalPosition,
|
||||
) -> LogicalPosition {
|
||||
logical_pos: LogicalPosition<f64>,
|
||||
) -> LogicalPosition<f64> {
|
||||
match self.hidpi_mode {
|
||||
ActiveHiDpiMode::Default => logical_pos,
|
||||
_ => logical_pos
|
||||
.to_physical(window.hidpi_factor())
|
||||
.to_physical::<f64>(window.scale_factor())
|
||||
.to_logical(self.hidpi_factor),
|
||||
}
|
||||
}
|
||||
@ -306,13 +310,13 @@ impl WinitPlatform {
|
||||
pub fn scale_pos_for_winit(
|
||||
&self,
|
||||
window: &Window,
|
||||
logical_pos: LogicalPosition,
|
||||
) -> LogicalPosition {
|
||||
logical_pos: LogicalPosition<f64>,
|
||||
) -> LogicalPosition<f64> {
|
||||
match self.hidpi_mode {
|
||||
ActiveHiDpiMode::Default => logical_pos,
|
||||
_ => logical_pos
|
||||
.to_physical(self.hidpi_factor)
|
||||
.to_logical(window.hidpi_factor()),
|
||||
.to_physical::<f64>(self.hidpi_factor)
|
||||
.to_logical(window.scale_factor()),
|
||||
}
|
||||
}
|
||||
/// Handles a winit event.
|
||||
@ -490,14 +494,15 @@ impl WinitPlatform {
|
||||
#[cfg(feature = "winit-20")]
|
||||
fn handle_window_event(&mut self, io: &mut Io, window: &Window, event: &WindowEvent) {
|
||||
match *event {
|
||||
WindowEvent::Resized(logical_size) => {
|
||||
WindowEvent::Resized(physical_size) => {
|
||||
let logical_size = physical_size.to_logical(window.scale_factor());
|
||||
let logical_size = self.scale_size_from_winit(window, logical_size);
|
||||
io.display_size = [logical_size.width as f32, logical_size.height as f32];
|
||||
}
|
||||
WindowEvent::HiDpiFactorChanged(scale) => {
|
||||
WindowEvent::ScaleFactorChanged { scale_factor, .. } => {
|
||||
let hidpi_factor = match self.hidpi_mode {
|
||||
ActiveHiDpiMode::Default => scale,
|
||||
ActiveHiDpiMode::Rounded => scale.round(),
|
||||
ActiveHiDpiMode::Default => scale_factor,
|
||||
ActiveHiDpiMode::Rounded => scale_factor.round(),
|
||||
_ => return,
|
||||
};
|
||||
// Mouse position needs to be changed while we still have both the old and the new
|
||||
@ -511,7 +516,7 @@ impl WinitPlatform {
|
||||
self.hidpi_factor = hidpi_factor;
|
||||
io.display_framebuffer_scale = [hidpi_factor as f32, hidpi_factor as f32];
|
||||
// Window size might change too if we are using DPI rounding
|
||||
let logical_size = window.inner_size();
|
||||
let logical_size = window.inner_size().to_logical(scale_factor);
|
||||
let logical_size = self.scale_size_from_winit(window, logical_size);
|
||||
io.display_size = [logical_size.width as f32, logical_size.height as f32];
|
||||
}
|
||||
@ -542,6 +547,7 @@ impl WinitPlatform {
|
||||
}
|
||||
}
|
||||
WindowEvent::CursorMoved { position, .. } => {
|
||||
let position = position.to_logical(window.scale_factor());
|
||||
let position = self.scale_pos_from_winit(window, position);
|
||||
io.mouse_pos = [position.x as f32, position.y as f32];
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user