diff options
| author | HampusM <hampus@hampusmat.com> | 2026-07-13 15:52:42 +0200 |
|---|---|---|
| committer | HampusM <hampus@hampusmat.com> | 2026-07-13 15:52:42 +0200 |
| commit | fda9411a1f3f4d4870a8d7e508eb1ac030a1b658 (patch) | |
| tree | d3177a62aa9601ca96beb13b8fb66c1757f05fc2 /engine | |
| parent | e90094445514effb65ac3bec05a9f5896cdc49db (diff) | |
feat(engine): handle mouse scroll in dear imgui backend
Diffstat (limited to 'engine')
| -rw-r--r-- | engine/src/ui/imgui.rs | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/engine/src/ui/imgui.rs b/engine/src/ui/imgui.rs index 7dea7fb..75ce9c0 100644 --- a/engine/src/ui/imgui.rs +++ b/engine/src/ui/imgui.rs @@ -503,12 +503,11 @@ fn update_inputs( mouse_buttons: &MouseButtons, ) { + let io = context.ctx.get_io_mut(); + for (key, key_state) in keyboard.new_key_states() { if let Some(key) = key_to_imgui_key(key) { - context - .ctx - .get_io_mut() - .add_key_event(key, key_state.is_pressed()); + io.add_key_event(key, key_state.is_pressed()); } } @@ -517,22 +516,25 @@ fn update_inputs( continue; } - context.ctx.get_io_mut().add_input_character(character); + io.add_input_character(character); } + io.add_mouse_source_event(dear_imgui_rs::input::MouseSource::Mouse); + let mouse_pos = mouse.position.to_logical::<f64>(window.scale_factor()); - context - .ctx - .get_io_mut() - .add_mouse_pos_event([mouse_pos.x as f32, mouse_pos.y as f32]); + io.add_mouse_pos_event([mouse_pos.x as f32, mouse_pos.y as f32]); + + if !mouse.curr_tick_scroll_delta.is_zero() { + io.add_mouse_wheel_event([ + mouse.curr_tick_scroll_delta.hor_lines, + mouse.curr_tick_scroll_delta.vert_lines, + ]); + } for (mouse_button, mouse_button_state) in mouse_buttons.all_current() { if let Some(mouse_button) = mouse_button_to_imgui_mouse_button(mouse_button) { - context - .ctx - .get_io_mut() - .add_mouse_button_event(mouse_button, mouse_button_state.is_pressed()); + io.add_mouse_button_event(mouse_button, mouse_button_state.is_pressed()); } } } |
