dear-imgui-rs 0.18.0

High-level Rust bindings to Dear ImGui v1.92.9b with docking, WGPU/GL backends, and extensions (ImPlot/ImPlot3D, ImNodes, ImGuizmo, file browser, reflection-based UI)
Documentation
use dear_imgui_rs as imgui;

fn prepare_imgui(ctx: &mut imgui::Context) {
    let io = ctx.io_mut();
    io.set_display_size([800.0, 600.0]);
    io.set_delta_time(1.0 / 60.0);

    ctx.font_atlas()
        .try_claim_legacy_renderer()
        .expect("legacy renderer font atlas should be available")
        .build();
}

#[test]
fn focus_scope_accepts_typed_imgui_id_and_restores_previous_scope() {
    let mut ctx = imgui::Context::create();
    prepare_imgui(&mut ctx);

    let ui = ctx.frame();
    let scope_id = ui.get_id("typed focus scope");

    ui.window("focus scope host").build(|| {
        let previous_scope = unsafe { imgui::sys::igGetCurrentFocusScope() };

        {
            let _scope = ui.push_focus_scope(scope_id);
            assert_eq!(
                unsafe { imgui::sys::igGetCurrentFocusScope() },
                scope_id.raw()
            );
        }

        assert_eq!(
            unsafe { imgui::sys::igGetCurrentFocusScope() },
            previous_scope
        );
    });
}