imgui v1.75 Release Notes

Release Date: 2020-02-17 // 3 months ago
  • Reading the full changelog is a good way to keep up to date with the things dear imgui has to offer , and maybe will give you ideas of some features that you've been ignoring until now!


    • 👍 [JVM], completed the moving to full mirror native imgui support in terms of UTF8 and (double) Char
    • 🛠 Dozens of fixes, e.g. for Ctrl+Tab, InputText, ColorEdit, in backends etc. among other things.
    • ➕ Added DrawList::addNgon apis for explicit low-polygon count, in prevision for future version making all circles actually round. DrawList::addCircle apis can now takes a zero segment count to use auto-tesselation.
    • [JVM only] double click on a word in text selects only that world, up to the next space included. Native selects still everything

    💥 Breaking Changes

    • ✂ Removed implicit default parameter to IsMouseDragging(int button = 0) to be consistent with other mouse functions (none of the other functions have it).
    • DrawList::addCircle()/addCircleFilled() functions don't accept negative radius.
    • 👍 Limiting columns()/beginColumns() api to 64 columns with an assert. While the current code technically supports it, future code may not so we're putting the restriction ahead.
    • 🔄 changed Rect() default constructor initializes all fields to 0f instead of Float.MAX_VALUE. If you used Rect::add() to create bounding boxes by adding multiple points into it without an explicit initialization, you may need to fix your initial value.

    Other Changes

    • 🆓 Inputs: Added MouseButton enum for convenience (e.g. MouseButton.Right.i=1). We forever guarantee that the existing value will not changes so existing code is free to use 0/1/2.
    • 🛠 Nav: Fixed a bug where the initial CTRL-Tab press while in a child window sometimes selected the current root window instead of always selecting the previous root window. (#787)
    • ColorEdit: Fix label alignment when using ColorEditFlags.NoInputs. (#2955) [@rokups]
    • 🔒 ColorEdit: In HSV display of a RGB stored value, attempt to locally preserve Saturation when Value==0.0 (similar to changes done in 1.73 for Hue). Removed Hue editing lock since those improvements in 1.73 makes them unnecessary. (#2722, #2770). [@rokups]
    • ColorEdit: "Copy As" context-menu tool shows hex values with a '#' prefix instead of '0x'.
    • ColorEdit: "Copy As" content-menu tool shows hex values both with/without alpha when available.
    • ⏪ InputText: Fix corruption or crash when executing undo after clearing input with ESC, as a byproduct we are allowing to later undo the revert with a CTRL+Z. (#3008).
    • MenuBar: Fix minor clipping issue where occasionally a menu text can overlap the right-most border.
    • Window: Fix setNextWindowBgAlpha(1f) failing to override alpha component. (#3007) [@Albog]
    • ✅ Window: When testing for the presence of the WindowFlags.NoBringToFrontOnFocus flag we test both the focused/clicked window (which could be a child window) and the root window.
    • 💅 DrawList: addCircle(), addCircleFilled() API can now auto-tessellate when provided a segment count of zero. Alter tessellation quality with style.CircleSegmentMaxError. [@ShironekoBen]
    • DrawList: Add addNgon(), addNgonFilled() API with a guarantee on the explicit segment count. In the current branch they are essentially the same as addCircle(), addCircleFilled() but as we will rework the circle rendering functions to use textures and automatic segment count selection, those new api can fill a gap. [@ShironekoBen]
    • Columns: DrawList::channels* functions now work inside columns. Added extra comments to suggest using user-owned DrawListSplitter instead of DrawList functions. [@rokups]
    • Misc: Added MouseCursor.NotAllowed enum so it can be used by more shared widgets. [@rokups]
    • 👍 Backends: GLFW: (started) adding support for the missing mouse cursors newly added in GLFW 3.4+. [@rokups]
      [JVM] transition will be complete with the next lwjgl stable version

    Help wanted!

    • 📚 [JVM] Documentation is terrible outdated, we need help to update it
    • 📚 Dear ImGui is looking for a technical writer to help writing technical articles, tutorials and documentation. Please reach out if you are interesting in helping!.
    • 👀 The Vulkan renderer appears to have issues (see vulkan tag)
      Browsing issues and todo list you may find something something to contribute to!

Previous changes from v1.74

  • ⚡️ Updates:

    • kotlin 1.3.61
    • lwjgl 3.2.3
    • gradle 6.0.1
    • shadow 5.2.0
    • 👕 kotlintest 3.4.2

    🔄 Changelogs:

    🚀 This is a general release, keeping with the rhythm of having more frequent, smaller releases.

    Reading the full changelog is a good way to keep up to date with the things dear imgui has to offer, and maybe will give you ideas of some features that you've been ignoring until now!

    Thanks for the last help:

    👍 @Sylvyrfysh (support help and coding)
    👍 @exuvo (support help)
    @yuraj11 and @ebak for donating

    and all the others opening issues and help tracking down bugs


    • ✂ Removed redirecting functions/enums names which were marked obsolete in 1.52 (October 2017). (it doesnt affect our port, we never keep them)
    • 🛠 Quantity of fixes.
    • 👌 Improved readme, docs, links, wiki hub.
    • 👌 Improved our continuous integration and testing suite.

    💥 Breaking Changes:

    • 🛠 Inputs: Fixed a miscalculation in the keyboard/mouse "typematic" repeat delay/rate calculation, used by keys and e.g. repeating mouse buttons as well as the GetKeyPressedAmount() function.
      0️⃣ If you were using a non-default value for io.KeyRepeatRate (previous default was 0.250), you can add +io.KeyRepeatDelay to it to compensate for the fix.
      🛠 The function was triggering on: 0.0 and (delay+rate*N) where (N>=1). Fixed formula responds to (N>=0).
      Effectively it made io.KeyRepeatRate behave like it was set to (io.KeyRepeatRate + io.KeyRepeatDelay).
      🛠 Fixed the code and altered default io.KeyRepeatRate,Delay from 0.250,0.050 to 0.300,0.050 to compensate.
      If you never altered io.KeyRepeatRate nor used GetKeyPressedAmount() this won't affect you.
    • Fonts: FontAtlas::addCustomRectRegular() now requires an ID larger than 0x110000 (instead of 0x10000) to
      ⚡️ conform with supporting Unicode planes 1-16 in a future update. ID below 0x110000 will now assert.

    Other Changes:

    • 🛠 InputText, Nav: Fixed Home/End key broken when activating Keyboard Navigation. (#787)
    • InputText: Filter out ASCII 127 (DEL) emitted by low-level OSX layer, as we are using the Key value. (#2578)
    • 🛠 Layout: Fixed a couple of subtle bounding box vertical positioning issues relating to the handling of text baseline alignment. The issue would generally manifest when laying out multiple items on a same line, with varying heights and text baseline offsets. Some specific examples, e.g. a button with regular frame padding followed by another item with a multi-line label and no frame padding, such as: multi-line text, small button, tree node item, etc. The second item was correctly offset to match text baseline, and would interact/display correctly, but it wouldn't push the contents area boundary low enough.
    • 🛠 Scrollbar: Fixed an issue where scrollbars wouldn't display on the frame following a frame where all child window contents would be culled.
    • 🛠 ColorPicker: Fixed SV triangle gradient to block (broken in 1.73). (#2864, #2711). [@lewa-j]
    • 🛠 TreeNode: Fixed combination of TreeNodeFlag.SpanFullWidth and TreeNodeFlag.OpenOnArrow incorrectly locating the arrow hit position to the left of the frame. (#2451, #2438, #1897)
    • TreeNode: The collapsing arrow accepts click even if modifier keys are being held, facilitating interactions with custom multi-selections patterns. (#2886, #1896, #1861)
    • TreeNode: Added IsItemToggledOpen() to explicitly query if item was just open/closed, facilitating interactions with custom multi-selections patterns. (#1896, #1861)
    • DragScalar, SliderScalar, InputScalar: Added p_ prefix to parameter that are pointers to the data to clarify how they are used, and more comments redirecting to the demo code. (#2844)
    • Error handling: Assert if user mistakenly calls End() instead of EndChild() on a child window. (#1651)
    • 📄 Docs: Improved and moved FAQ to docs/ so it can be readable on the web. [@ButternCream, @ocornut]
    • 📄 Docs: Moved misc/fonts/README.txt to docs/FONTS.txt.
    • 📄 Docs: Added permanent redirect from to FAQ page.
    • Demo: Added simple item reordering demo in Widgets -> Drag and Drop section. (#2823, #143) [@rokups]
    • Metrics: Show wire-frame mesh and approximate surface area when hovering ImDrawCmd. [@ShironekoBen]
    • Metrics: Expose basic details of each window key/value state storage.
    • 🏗 Backends: OpenGL3: Fix building with pre-3.2 GL loaders which do not expose glDrawElementsBaseVertex(), using runtime GL version to decide if we set ImGuiBackendFlags_RendererHasVtxOffset. (#2866, #2852) [@dpilawa]
    • Backends: OSX: Fix using Backspace key. (#2578, #2817, #2818) [@DiligentGraphics]