Skip to content

v1.50

Compare
Choose a tag to compare
@ocornut ocornut released this 02 Jun 11:21
· 5329 commits to master since this release

v1.50 release and the resuming of dear imgui operations!

See https://github.com/ocornut/imgui for the project homepage.
See https://github.com/ocornut/imgui/releases for earlier release notes.
Scroll below for a gallery of screenshots.

Version 1.49 has been released a year ago! It was a slow year for the library: I started a company, I made and shipped a game (extensively using imgui) on 3 consoles and I got married. So imgui wasn't really my top occupation this year. The game has now shipped, and aside from a few things left to do (e.g. finishing the Steam version, handling physical releases of the game, fully vacating our London apartment...), I hope to spend more time on the library from this summer. The Patreon which had been put on hold in December has now been resumed.

1.50 is the sum of all improvements and fixes that happened this year, so if you have been closely following the updates here, nothing will be very new to you. As more time is invested into dear imgui, new features will be worked on, and releases should become more frequent again.

Please also note of the beta gamepad navigation branch (see #787) which is semi-functional and various studios have been using in production already. The branch is kept in sync with master but still require some work. This is likely be merged into 1.51 or 1.52. The initial work has been kindly sponsored by Insomniac, final push this summer is being kindly sponsored by another mystery company.

imgui-nav-20160821b

Support future development of dear imgui

This library is free (as in freedom), but needs your support to sustain its development. There are lots of desirable new features and maintenance to do. If you are an individual and want to support dear imgui, you can support development via Monthly donations on Patreon or One-off donations via PayPal.

Patreon:

Patreon

PayPal:

PayPal

If you work for a company using dear imgui or have the means to do so, please consider sponsoring future development (e.g: sponsor a few weeks or months of work). I can invoice/bill via my company, provide private support, custom development etc. E-mail: omarcornut at gmail. Programmers working for established game studios: contact me so I can help you convince your studio to fund a little of imgui development! :)

(Future work will include, but is not limited to: add a testing framework, add documentation, improving the gamepad and keyboard navigation features, rewrite columns (with more natural header, re-ordering, sizing policy, persistent settings, sorting, ability to recurse - basically fix the existing broken columns), add tabs, add and maintain a first-class citizen docking extension, finish color picker, add alt-style local shortcuts, add global style shortcuts (which will involve menus running without rendering), make remote-style imgui an easy to use first class citizen, improve and add layout tools, create a competent multi-purpose plot/graph api, improving styling and the default look of imgui, improve usage of multiple context or multi-threaded situations, rewrite the multi-line text editor (many fixes and desirable features), further optimizations, introduce a more dynamic font atlas, add extensions to provide basic form of rich/markup text display, provide support to all sorts of user, massage internals to stabilize them and allow extensions to be easier to maintain, etc.)

How to update

Overwrite every file except imconfig.h (which you may have modified). Check out Breaking Changes section below. If you have a problem with a missing function/symbols, search for its name in the code, there will likely be a comment about it. Please report any issue to the GitHub page!

Breaking Changes

  • Added a void* user_data parameter to Clipboard function handlers. (#875)
  • SameLine(x) with x>0.0f is now relative to left of column/group if any, and not always to left of window. This was sort of always the intent and hopefully breakage should be minimal.
  • Renamed ImDrawList::PathFill() - rarely used directly - to ImDrawList::PathFillConvex() for clarity and consistency.
  • Removed ImFontConfig::MergeGlyphCenterV in favor of a more multipurpose ImFontConfig::GlyphOffset.
  • Style: style.WindowTitleAlign is now a ImVec2 (ImGuiAlign enum was removed). set to (0.5f,0.5f) for horizontal+vertical centering, (0.0f,0.0f) for upper-left, etc.
  • BeginChild(const char*) now applies the stack id to the provided label, consistently with other functions as it should always have been. It shouldn't affect you unless (extremely unlikely) you were appending multiple times to a same child from different locations of the stack id. If that's the case, generate an id with GetId() and use it instead of passing string to BeginChild().

All Changes

  • InputText(): Added support for CTRL+Backspace (delete word).
  • InputText(): OSX uses Super+Arrows for home/end. Add Shortcut+Backspace support. (#650) [@michaelbartnett]
  • InputText(): Got rid of individual OSX-specific options in ImGuiIO, added a single io.OSXBehaviors flag. (#473, #650)
  • InputText(): Fixed pressing home key on last character when it isn't a trailing \n (#588, #815)
  • InputText(): Fixed state corruption/crash bug in stb_textedit.h redo logic when exhausting undo/redo char buffer. (#715. #681)
  • InputTextMultiline(): Fixed Ctrl+DownArrow moving scrolling out of bounds.
  • InputTextMultiline(): Scrollbar fix for when input and latched internal buffers differs in a way that affects vertical scrollbar existence. (#725)
  • ImFormatString(): Fixed an overflow handling bug with implementation of vsnprintf() that do not return -1. (#793)
  • BeginChild(const char*) now applies stack id to provided label, consistent with other widgets. (#894, #713)
  • SameLine() with explicit X position is relative to left of group/columns. (ref #746, #125, #630)
  • SliderInt(), SliderFloat() supports reverse direction (where v_min > v_max). (#854)
  • SliderInt(), SliderFloat() better support for when v_min==v_max. (#919)
  • SliderInt(), SliderFloat() enforces writing back value when interacting, to be consistent with other widgets. (#919)
  • SliderInt, SliderFloat(): Fixed edge case where style.GrabMinSize being bigger than slider width can lead to a division by zero. (#919)
  • Added IsRectVisible() variation with explicit start-end positions. (#768) [@thedmd]
  • Fixed TextUnformatted() clipping bug in the large-text path when horizontal scroll has been applied. (#692, #246)
  • Fixed minor text clipping issue in window title when using font straying above usual line. (#699)
  • Fixed SetCursorScreenPos() fixed not adjusting CursorMaxPos as well.
  • Fixed scrolling offset when using SetScrollY(), SetScrollFromPosY(), SetScrollHere() with menu bar.
  • Fixed using IsItemActive() after EndGroup() or any widget using groups. (#840, #479)
  • Fixed IsItemActive() lagging by one frame on initial widget activation. (#840)
  • Fixed Separator() zero-height bounding box resulting in clipping when laying exactly on top line of clipping rectangle (#860)
  • Fixed PlotLines() PlotHistogram() calling with values_count == 0.
  • Fixed clicking on a window's void while staying still overzealously marking .ini settings as dirty. (#923)
  • Fixed assert triggering when a window has zero rendering but has a callback. (#810)
  • Scrollbar: Fixed rendering when sizes are negative to reduce glitches (which can happen with certain style settings and zero WindowMinSize).
  • EndGroup(): Made IsItemHovered() work when an item was activated within the group. (#849)
  • BulletText(): Fixed stopping to display formatted string after the '##' mark.
  • Closing the focused window restore focus to the first active root window in descending z-order .(part of #727)
  • Word-wrapping: Fixed a bug where we never wrapped after a 1 character word. [@sronsse]
  • Word-wrapping: Fixed TextWrapped() overriding wrap position if one is already set. (#690)
  • Word-wrapping: Fixed incorrect testing for negative wrap coordinates, they are perfectly legal. (#706)
  • ImGuiListClipper: fixed automatic-height calc path dumbly having user display element 0 twice. (#661, #716)
  • ImGuiListClipper: Fix to behave within column. (#661, #662, #716)
  • ImDrawList: Renamed ImDrawList::PathFill() to ImDrawList::PathFillConvex() for clarity. (BREAKING API)
  • Columns: End() avoid calling Columns(1) if no columns set is open, not sure why it wasn't the case already (pros: faster, cons: exercise less code).
  • ColorButton(): Fix ColorButton showing wrong hex value for alpha. (#1068) [@codecat]
  • ColorEdit4(): better preserve inputting value out of 0..255 range, display then clamped in Hexadecimal form.
  • Shutdown() clear out some remaining pointers for sanity. (#836)
  • Added IMGUI_USE_BGRA_PACKED_COLOR option in imconfig.h (#767, #844) [@thedmd]
  • Style: Removed the inconsistent shadow under RenderCollapseTriangle() (~#707)
  • Style: Added ButtonTextAlign, ImGuiStyleVar_ButtonTextAlign. (#842)
  • ImFont: Allowing to use up to 0xFFFE glyphs in same font (increased from previous 0x8000).
  • ImFont: Added GetGlyphRangesThai() helper. [@nProtect]
  • ImFont: CalcWordWrapPositionA() fixed font scaling with fallback character.
  • ImFont: Calculate and store the approximate texture surface to get an idea of how costly each source font is.
  • ImFontConfig: Added GlyphOffset to explicitely offset glyphs at font build time, useful for merged fonts. Removed MergeGlyphCenterV. (BREAKING API)
  • Clarified asserts in CheckStacksSize() when there is a stack mismatch.
  • Context: Support for #define-ing GImGui and IMGUI_SET_CURRENT_CONTEXT_FUNC to enable custom thread-based hackery (#586)
  • Updated stb_truetype.h to 1.14 (added OTF support, removed warnings). (#883, #976)
  • Updated stb_rect_pack.h to 0.10 (removed warnings). (#883)
  • Added ImGuiMouseCursor_None enum value for convenient usage by app/binding.
  • Clipboard: Added a void* user_data parameter to Clipboard function handlers. (#875) (BREAKING API)
  • Internals: Refactor internal text alignment options to use ImVec2, removed ImGuiAlign. (#842, #222)
  • Internals: Renamed ImLoadFileToMemory to ImFileLoadToMemory to be consistent with ImFileOpen + fix mismatching .h name. (#917)
  • Windows: Fixed Windows default clipboard handler leaving its buffer unfreed on application's exit. (#714)
  • Windows: No default IME handler when compiling for Windows using GCC. (#738)
  • Windows: Now using _wfopen() instead of fopen() to allow passing in paths/filenames with UTF-8 characters. (#917)
  • Tools: binary_to_compressed_c: Avoid ?? trigraphs sequences in string outputs which break some older compilers. (#839)
  • Demo: Added an extra 3-way columns demo.
  • Demo: ShowStyleEditor: show font character map / grid in more details.
  • Demo: Console: Fixed a completion bug when multiple candidates are equals and match until the end.
  • Demo: Fixed 1-byte off overflow in the ShowStyleEditor() combo usage. (#783) [@bear24rw]
  • Examples: Accessing ImVector fields directly, feel less stl-ey. (#810)
  • Examples: OpenGL*: Saving/restoring existing scissor rectangle for completeness. (#807)
  • Examples: OpenGL*: Saving/restoring active texture number (the value modified by glActiveTexture). (#1087, #1088, #1116)
  • Examples: OpenGL*: Saving/restoring separate color/alpha blend functions correctly. (#1120) [@greggman]
  • Examples: OpenGL2: Uploading font texture as RGBA32 to increase compatibility with users shaders for beginners. (#824)
  • Examples: Vulkan: Countless fixes and improvements. (#785, #804, #910, #1017, #1039, #1041, #1042, #1043, #1080) [@martty, @Loftilus, @ParticlePeter, @SaschaWillems]
  • Examples: DirectX9/10/10: Only call SetCursor(NULL) is io.MouseDrawCursor is set. (#585, #909)
  • Examples: DirectX9: Explicitely setting viewport to match that other examples are doing. (#937)
  • Examples: GLFW+OpenGL3: Fixed Shutdown() calling GL functions with NULL parameters if NewFrame was never called. (#800)
  • Examples: GLFW+OpenGL2: Renaming opengl_example/ to opengl2_example/ for clarity.
  • Examples: SDL+OpenGL: explicitly setting GL_UNPACK_ROW_LENGTH to reduce issues because SDL changes it. (#752)
  • Examples: SDL2: Added build .bat files for Win32.
  • Added various links to language/engine bindings.
  • Various other minor fixes, tweaks, comments, optimizations.

Gallery

See more here > #973

Thorium 3d

FishEngine

OpenBoardView

Animation editor

Boundless

Wonder Boy: The Dragon's Trap

Overgrowth

Recognition Robotics