Download Latest Version srcs-full-v1.92.801.tar.gz (58.4 MB)
Email in envelope

Get an email when there's a new version of Dear ImGui Bundle

Home / v1.92.800
Name Modified Size InfoDownloads / Week
Parent folder
imgui_bundle-1.92.8-cp313-cp313-pyemscripten_2025_0_wasm32.whl 2026-05-13 5.0 MB
srcs-full-v1.92.800.tar.gz 2026-05-13 58.4 MB
README.md 2026-05-12 9.5 kB
v1.92.800 source code.tar.gz 2026-05-12 9.6 MB
v1.92.800 source code.zip 2026-05-12 10.0 MB
Totals: 5 Items   82.9 MB 0

v1.92.800

Updated Dear ImGui to v1.92.8

See release info for v1.92.8.

Breaking changes: add_rect, add_polyline, path_stroke argument order

Dear ImGui v1.92.8 swapped the last two arguments of three ImDrawList drawing functions so that thickness (which is set explicitly far more often than flags) comes first. The bindings track this change.

For Python users — the affected methods on imgui.ImDrawList:

Method Old signature New signature
add_rect (p_min, p_max, col, rounding, flags, thickness) (p_min, p_max, col, rounding, thickness, flags)
add_polyline (points, col, flags, thickness) (points, col, thickness, flags)
path_stroke (col, flags, thickness) (col, thickness, flags)

If you use only positional arguments and pass 5+ of them, swap the last two:

:::python
# Before
draw_list.add_rect(p0, p1, col, rounding, imgui.ImDrawFlags_.none.value, 1.5)
draw_list.path_stroke(col, imgui.ImDrawFlags_.closed.value, thickness)

# After
draw_list.add_rect(p0, p1, col, rounding, 1.5, imgui.ImDrawFlags_.none.value)
draw_list.path_stroke(col, thickness, imgui.ImDrawFlags_.closed.value)

Old-order calls will not silently misrender — they are caught by one of three mechanisms:

  1. Static type-check (recommended). Running mypy or pyright once after upgrading flags every call that passes a float literal where the new signature expects flags: int: Argument of type "float" cannot be assigned to parameter "flags" of type "ImDrawFlags" in function "add_rect"
  2. Runtime, float thickness. pybind11 refuses to convert float→int, so add_rect(..., flags=ALL, thickness=2.0) written in the old order raises TypeError immediately.
  3. Runtime, int thickness. When both arguments are ints (e.g. thickness=2), the swapped value lands in flags and trips ImGui's own guard (flags & ImDrawFlags_InvalidMask_) == 0, raising: RuntimeError: IM_ASSERT(... "Incorrect parameter. Did you swapped 'thickness' and 'flags'?") The mask reserves bits 0-3 specifically to catch this swap: any small integer thickness ends up with bits 0-3 set, while every valid flag uses only bits 4-9.

In practice this covers every realistic old-order call site, so no extra detection layer is added on the Python side.

For C++ users — same swap on ImDrawList::AddRect, ImDrawList::AddPolyline and ImDrawList::PathStroke. See the upstream ImGui v1.92.8 changelog for the full rationale; the short version is that the typical call site changes from:

:::cpp
// Before
draw_list->AddRect(p_min, p_max, col, rounding, ImDrawFlags_None, border_size);
// After
draw_list->AddRect(p_min, p_max, col, rounding, border_size);

When IMGUI_DISABLE_OBSOLETE_FUNCTIONS is off (the default), ImGui keeps an inline redirection so old call sites still compile; with it on (as in the ImGui Bundle Python build), the old overloads are =delete, surfacing mistakes at compile time.

Updated ImGuiColorTextEdit (architecture refactor)

ImGuiColorTextEdit was rebased on its upstream future branch, which introduces a layered architecture (Document / TypeSetter / Colorizer / Bracketeer / LineFold / MiniMap / AutoComplete overlays) and lays the groundwork for word wrap, line folding, and a VSCode-style minimap.

image

The public C++ API changed in ways that propagate to the Python bindings. All cursor/selection coordinates now go through dedicated structs instead of (line, column) integer pairs, and column is renamed to index in the document-coordinate struct (rows differ from lines once word-wrap is enabled).

Breaking changes: TextEditor API

For Python users — the most common call sites:

Before After
editor.get_main_cursor_position().column editor.get_main_cursor_position().index
editor.set_cursor(line, col) editor.set_cursor(TextEditor.DocPos(line, col))
editor.select_region(sl, sc, el, ec) editor.select_region(TextEditor.DocPos(sl, sc), TextEditor.DocPos(el, ec))
editor.get_word_at_screen_pos(pos) editor.get_word_at_mouse_pos(pos)
editor.grow_selections_to_curly_brackets() editor.grow_selections()
editor.shrink_selections_to_curly_brackets() editor.shrink_selections()
editor.get_first_visible_line() / get_last_visible_line() editor.get_first_visible_row() / get_last_visible_row()

Context-menu and hover callbacks now receive a PopupData object instead of (line, column) integers:

:::python
# Before
def text_context_menu(line: int, column: int):
    ...
editor.set_text_context_menu_callback(text_context_menu)

def line_number_context_menu(line: int):
    ...
editor.set_line_number_context_menu_callback(line_number_context_menu)

# After
def text_context_menu(data: TextEditor.PopupData):
    line, column = data.pos.line, data.pos.index
    ...

def line_number_context_menu(data: TextEditor.PopupData):
    line = data.pos.line
    ...

For C++ users — same shape, with TextEditor::DocPos{line, index} and TextEditor::PopupData& data. Line/column counters are now size_t (use %zu in printf-style format strings).

Test Engine: safer Python integration

  • Catch Python exceptions in test_func / gui_func / teardown_func. Previously a Python exception in one of these callbacks propagated as nanobind::python_error on the engine's coroutine thread, hit std::terminate, and killed the process (taking remaining queued tests with it). Exceptions are now printed as a traceback, reported via ImGuiTestEngine_Error (test marked as TestStatus.error), and swallowed so the engine continues.
  • imgui_test_engine CrashHandler: install SA_RESETHAND on *nix to avoid abort() reentry spam.
  • Fix imgui_bundle.imgui.<submodule> imports (e.g. imgui.test_engine).

imgui-node-editor

  • Suppress hover/active for widgets inside a node that is covered by another node.
  • Fix popup position for Combo and ColorEdit inside the node editor canvas (three coords needed canvas→screen translation; the right guard is NextWindowData.HasFlags, not WindowFlags).
  • Link color now automatic, based on light vs dark theme.
  • UpdateNodeEditorColorsFromImguiColors(): improve colors, especially selection colors.
  • README: documented keyboard/mouse interactions; added doc in the header.

ImmVision

  • Clamp images so their texture does not bleed when dragged completely outside the viewport.
  • Improved resize: widget size, contrast, and behavior in a zoomed node editor.

ImGui (StackLayout patch)

  • StackLayout: don't inflate measured_size when the layout has no springs (fixes fractional-height alignment drift in some layouts).

Pyodide / Playground

  • Switched to pyodide 0.29.4.
  • New WebGL binding for Pyodide: webgl.register_texture / webgl.unregister_texture. Use it inside HelloImGui's custom_background to upload textures produced from JS-side WebGL2RenderingContext. See pyodide_projects/projects/playground/examples for documented examples.
  • Playground: added documented WebGL examples, source link on the minimal example, and restore the landing page on browser back-to-root.
  • Added implot_demo, implot3d_demo, and imgui_demo to the playground.
  • New "WebAudio minimal beep" example demonstrating browser audio from Python.
  • Save Python code to a file before running it (for nicer tracebacks).
  • Per-file deployment of demo source into the Emscripten FS (imgui_bundle_add_demo.cmake).
  • Non-blocking loading banner over the canvas, with explanatory text, smooth time-based progress, rotating tips, and a lazy pendulum video.
  • Smooth progress bar for per-demo wheel installs; snap back to 0 when the banner reopens.
  • Pyodide + LaTeX: fix issues on consecutive runs.
  • min_pyodide_app: log errors to the JS console.

Python backends

  • Fix SDL python backends on Wayland (#463).
  • Move the PyOpenGL Wayland workaround out of imgui_bundle/__init__.py (#321, [#463]): applied only by the affected backends.

Full Changelog: https://github.com/pthom/imgui_bundle/compare/v1.92.700...v1.92.800

Source: README.md, updated 2026-05-12