mirror of
https://github.com/eliasstepanik/imgui-rs.git
synced 2026-01-16 07:58:33 +00:00
Fixed renderer on wayland
This commit is contained in:
parent
5f4cbcdc16
commit
a84610ee03
@ -94,6 +94,9 @@ fn main() {
|
||||
winit::event::Event::WindowEvent { window_id, event: WindowEvent::CloseRequested } if window_id == window.id() => {
|
||||
control_flow.set_exit();
|
||||
},
|
||||
winit::event::Event::WindowEvent { window_id, event: WindowEvent::Resized(new_size) } if window_id == window.id() => {
|
||||
surface.resize(&context, NonZeroU32::new(new_size.width).unwrap(), NonZeroU32::new(new_size.height).unwrap());
|
||||
},
|
||||
winit::event::Event::MainEventsCleared => {
|
||||
window.request_redraw();
|
||||
},
|
||||
|
||||
@ -271,42 +271,37 @@ impl Renderer {
|
||||
io.display_size = [window_size.width, window_size.height];
|
||||
io.display_framebuffer_scale = [1.0, 1.0];
|
||||
|
||||
if io
|
||||
.backend_flags
|
||||
.contains(BackendFlags::RENDERER_HAS_VIEWPORTS)
|
||||
{
|
||||
let viewport = imgui.main_viewport_mut();
|
||||
let viewport = imgui.main_viewport_mut();
|
||||
|
||||
let main_pos = main_window.inner_position().unwrap().cast::<f32>();
|
||||
let main_pos = main_window.inner_position().unwrap_or_default().cast::<f32>();
|
||||
|
||||
viewport.pos = [main_pos.x, main_pos.y];
|
||||
viewport.work_pos = viewport.pos;
|
||||
viewport.size = [window_size.width, window_size.height];
|
||||
viewport.work_size = viewport.size;
|
||||
viewport.dpi_scale = 1.0;
|
||||
viewport.platform_user_data = Box::into_raw(Box::new(ViewportData {
|
||||
pos: [main_pos.x, main_pos.y],
|
||||
size: [window_size.width, window_size.height],
|
||||
focus: true,
|
||||
minimized: false,
|
||||
}))
|
||||
.cast();
|
||||
viewport.pos = [main_pos.x, main_pos.y];
|
||||
viewport.work_pos = viewport.pos;
|
||||
viewport.size = [window_size.width, window_size.height];
|
||||
viewport.work_size = viewport.size;
|
||||
viewport.dpi_scale = 1.0;
|
||||
viewport.platform_user_data = Box::into_raw(Box::new(ViewportData {
|
||||
pos: [main_pos.x, main_pos.y],
|
||||
size: [window_size.width, window_size.height],
|
||||
focus: true,
|
||||
minimized: false,
|
||||
}))
|
||||
.cast();
|
||||
|
||||
let mut monitors = Vec::new();
|
||||
for monitor in main_window.available_monitors() {
|
||||
monitors.push(imgui::PlatformMonitor {
|
||||
main_pos: [monitor.position().x as f32, monitor.position().y as f32],
|
||||
main_size: [monitor.size().width as f32, monitor.size().height as f32],
|
||||
work_pos: [monitor.position().x as f32, monitor.position().y as f32],
|
||||
work_size: [monitor.size().width as f32, monitor.size().height as f32],
|
||||
dpi_scale: 1.0,
|
||||
});
|
||||
}
|
||||
imgui
|
||||
.platform_io_mut()
|
||||
.monitors
|
||||
.replace_from_slice(&monitors);
|
||||
let mut monitors = Vec::new();
|
||||
for monitor in main_window.available_monitors() {
|
||||
monitors.push(imgui::PlatformMonitor {
|
||||
main_pos: [monitor.position().x as f32, monitor.position().y as f32],
|
||||
main_size: [monitor.size().width as f32, monitor.size().height as f32],
|
||||
work_pos: [monitor.position().x as f32, monitor.position().y as f32],
|
||||
work_size: [monitor.size().width as f32, monitor.size().height as f32],
|
||||
dpi_scale: 1.0,
|
||||
});
|
||||
}
|
||||
imgui
|
||||
.platform_io_mut()
|
||||
.monitors
|
||||
.replace_from_slice(&monitors);
|
||||
|
||||
imgui.set_platform_name(Some(format!(
|
||||
"imgui-winit-glow-renderer-viewports {}",
|
||||
@ -419,12 +414,8 @@ impl Renderer {
|
||||
.io()
|
||||
.config_flags
|
||||
.contains(ConfigFlags::VIEWPORTS_ENABLE)
|
||||
&& imgui
|
||||
.io()
|
||||
.backend_flags
|
||||
.contains(BackendFlags::RENDERER_HAS_VIEWPORTS)
|
||||
{
|
||||
let window_pos = window.inner_position().unwrap().cast::<f32>();
|
||||
let window_pos = window.inner_position().unwrap_or_default().cast::<f32>();
|
||||
imgui.io_mut().mouse_pos = [
|
||||
position.x as f32 + window_pos.x,
|
||||
position.y as f32 + window_pos.y,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user