mirror of
https://github.com/eliasstepanik/imgui-rs.git
synced 2026-01-11 21:48:36 +00:00
Fixed crashes
This commit is contained in:
parent
0e9f39c942
commit
e68ea5fe3b
@ -11,24 +11,26 @@ fn main() {
|
|||||||
let mut open = true;
|
let mut open = true;
|
||||||
|
|
||||||
system.main_loop(move |_, ui| {
|
system.main_loop(move |_, ui| {
|
||||||
ui.window("Hello world")
|
if open {
|
||||||
.opened(&mut open)
|
ui.window("Hello world")
|
||||||
.size([300.0, 110.0], Condition::FirstUseEver)
|
.opened(&mut open)
|
||||||
.build(|| {
|
.size([300.0, 110.0], Condition::FirstUseEver)
|
||||||
ui.text_wrapped("Hello world!");
|
.build(|| {
|
||||||
ui.text_wrapped("こんにちは世界!");
|
ui.text_wrapped("Hello world!");
|
||||||
if ui.button(choices[value]) {
|
ui.text_wrapped("こんにちは世界!");
|
||||||
value += 1;
|
if ui.button(choices[value]) {
|
||||||
value %= 2;
|
value += 1;
|
||||||
}
|
value %= 2;
|
||||||
|
}
|
||||||
|
|
||||||
ui.button("This...is...imgui-rs!");
|
ui.button("This...is...imgui-rs!");
|
||||||
ui.separator();
|
ui.separator();
|
||||||
let mouse_pos = ui.io().mouse_pos;
|
let mouse_pos = ui.io().mouse_pos;
|
||||||
ui.text(format!(
|
ui.text(format!(
|
||||||
"Mouse Position: ({:.1},{:.1})",
|
"Mouse Position: ({:.1},{:.1})",
|
||||||
mouse_pos[0], mouse_pos[1]
|
mouse_pos[0], mouse_pos[1]
|
||||||
));
|
));
|
||||||
});
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -639,7 +639,7 @@ impl WinitPlatform {
|
|||||||
pub fn update_viewports<T>(&mut self, imgui: &mut Context, window_target: &winit::event_loop::EventLoopWindowTarget<T>) {
|
pub fn update_viewports<T>(&mut self, imgui: &mut Context, window_target: &winit::event_loop::EventLoopWindowTarget<T>) {
|
||||||
// remove destroyed windows
|
// remove destroyed windows
|
||||||
self.windows.retain(|id, _| {
|
self.windows.retain(|id, _| {
|
||||||
imgui.viewport_by_id(*id).is_some()
|
imgui.viewports().any(|vp| vp.id == *id)
|
||||||
});
|
});
|
||||||
|
|
||||||
// handle new viewports
|
// handle new viewports
|
||||||
@ -1051,12 +1051,17 @@ impl WinitPlatform {
|
|||||||
Event::WindowEvent { window_id, ref event } => {
|
Event::WindowEvent { window_id, ref event } => {
|
||||||
let viewport = {
|
let viewport = {
|
||||||
if window_id == main_window.id() {
|
if window_id == main_window.id() {
|
||||||
imgui.main_viewport_mut()
|
Some(imgui.main_viewport_mut())
|
||||||
} else {
|
} else {
|
||||||
let imgui_id = self.windows.iter().find(|(_, wnd)| wnd.id() == window_id).map(|(id, _)| *id).unwrap();
|
self.windows.iter().find(|(_, wnd)| wnd.id() == window_id).map(|(id, _)| *id).and_then(|id| imgui.viewport_by_id_mut(id))
|
||||||
imgui.viewport_by_id_mut(imgui_id).unwrap()
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
let viewport = if let Some(viewport) = viewport {
|
||||||
|
viewport
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
let state = unsafe{&mut *(viewport.platform_user_data as *mut ViewportState)};
|
let state = unsafe{&mut *(viewport.platform_user_data as *mut ViewportState)};
|
||||||
|
|
||||||
match *event {
|
match *event {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user