Kotlin Graphics Imgui Versions Save

Bloat-free Immediate Mode Graphical User interface for JVM with minimal dependencies (rewrite of dear imgui)

v1.89.7-1

8 months ago

1.89.7-1 hotfix

#191

v1.89.7

9 months ago

v1.89.7

1.89.7: Summer release! 🌞

Reading the 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!


Dear ImGui is funded by your contributions and needs them right now. If your company uses Dear ImGui, consider reaching out.

Changes

This is a followup to v1.89, v1.89.2, v1.89.3, v1.89.4, v1.89.5, v1.89.6. We are trying to make more frequent releases. Because: some people are relying on tagging and auto-generated bindings for other languages. And: it sets a beat and may encourage teams to update more frequently.

Omar has been stubbornly deferring tagging 1.90 for while because he wanted to include the range-select feature in it, but it's not done... But there are about 540 lines of changelog between 1.89 and 1.89.7.

Breaking Changes:

  • Moved io.hoverDelayShort/io.hoverDelayNormal to style.hoverDelayShort/style.hoverDelayNormal. As the fields were added in 1.89 and expected to be left unchanged by most users, or only tweaked once during app initialization, we are exceptionally accepting the breakage. Majority of users are likely to not even notice.
  • Overlapping items: (https://github.com/ocornut/imgui/issues/6512, https://github.com/ocornut/imgui/issues/3909, https://github.com/ocornut/imgui/issues/517)
    • Obsoleted setItemAllowOverlap(): it didn't and couldn't work reliably since 1.89 (2022-11-15), and relied on ambiguously defined design. Use setNextItemAllowOverlap() before item instead.
    • Added setNextItemAllowOverlap() (called before an item) as a replacement for using setItemAllowOverlap() (called after an item). This is roughly equivalent to using the legacy setItemAllowOverlap() call (public API) + ButtonFlag,AllowOverlap (internal).
    • Renamed 'TreeNodeFlag.AllowItemOverlaptoTreeNodeFlag,AllowOverlap` for consistency.
    • Renamed SelectableFlag.AllowItemOverlap to SelectableFlag.AllowOverlap for consistency.

Other Changes:

v.1.89.6

11 months ago

v1.89.6

1.89.6

Reading the 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!

📣 Click version number above to display full release note contents, sometimes randomly clipped by GitHub..

Dear ImGui is funded by your contributions and needs them right now. If your company uses Dear ImGui, consider reaching out.

Changes

This is a followup to v1.89, v1.89.1, v1.89.2, v1.89.3, v1.89.4, v1.89.5. We are trying to make more frequent releases. Because it sets a beat and may encourage teams to update more frequently.

Omar has been stubbornly deferring tagging 1.90 for while because he wanted to include the range-select feature in it, but it's not done... But there are nearly 500 lines of changelog between 1.89 and 1.89.6.

Breaking Changes:

Other Changes:

v1.89.5

11 months ago

v1.89.5

1.89.5: April release!

Reading the 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!

📣 Click version number above to display full release note contents, sometimes randomly clipped by GitHub..

Dear ImGui is funded by your contributions and needs them right now. If your company uses Dear ImGui, consider reaching out. See Sponsors page for details.

TL;DR

Changes

This is a followup to v1.89, v1.89.1, v1.89.2, v1.89.3, v1.89.4. We are trying to make more frequent releases. Because it sets a beat and may encourage teams to update more frequently.

All Changes:

v1.89.4

11 months ago

1.89.4

v1.89.4: Release cadence continues!

Reading the 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!

📣 Click version number above to display full release note contents, sometimes randomly clipped by GitHub..

Dear ImGui is funded by your contributions and needs them right now. If your company uses Dear ImGui, consider reaching out.

TL;DR

  • Nav: Tab key goes through every items (when keyboard navigation is active).
  • Nav: Enter key works to activate most items (when keyboard navigation is active).
  • Added return value to BeginTooltip().
  • Examples: Activated keyboard and gamepad navigation by default in all examples.
  • Various other fixes related to: Nav, Tables, Drag and Drop, InputText.
  • Various improvements to GLFW backends.
  • Added a Debug Tools to facilitate testing user-code testing Begin/BeginChild return value.

Changes

This is a followup to v1.89, v1.89.1, v1.89.2 and v1.89.3. We are trying to make more frequent releases. Because it sets a beat and may encourage teams to update more frequently.

Breaking Changes:

  • Renamed pushAllowKeyboardFocus()/popAllowKeyboardFocus() to pushTabStop()/popTabStop().
  • Tooltips: Added Boolean return value to beginTooltip() for API consistency. Please only submit contents and call endTooltip() if beginTooltip() returns true. In reality the function will currently always return true, but further changes down the line may change this, best to clarify API sooner. Updated demo code accordingly.

Other Changes:

v1.89.3

1 year ago

1.89.3: Release cadence intensifies!

TL;DR

  • Fixed wrapping text regression from previous versions.
  • Added SeparatorText().
  • Lifted limit on table columns count.
  • Fixed to horizontal scrolling wheel in many backends.
  • Many other tweaks/fixes.

image

Changes

v1.89.2

1 year ago

v1.89.2

Special thanks to @kyay10 for his PRs (1 and 2).

This is a followup to v1.89 and v1.89.1.

All Changes:

v1.79

3 years 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!

Breaking Changes

  • Fonts: Removed Font::displayOffset in favor of FontConfig::glyphOffset. displayOffset was applied after scaling and not very meaningful/useful outside of being needed by the default ProggyClean font. It was also getting in the way of better font scaling, so let's get rid of it now! If you used displayOffset it was probably in association to rasterizing a font at a specific size, in which case the corresponding offset may be reported into glyphOffset. If you scaled this value after calling addFontDefault(), this is now done automatically. (#1619)
  • ListClipper: Renamed constructor parameters which created an ambiguous alternative to using the ListClipper::begin() function, with misleading edge cases. Always use ListClipper::begin()!
  • Style: Renamed style.tabMinWidthForUnselectedCloseButton to style.tabMinWidthForCloseButton.
  • Renamed SliderFlag.ClampOnInput to SliderFlag.AlwaysClamp.
  • Renamed openPopupContextItem() back to openPopupOnItemClick(), REVERTED CHANGE FROM 1.77. For variety of reason this is more self-explanatory and less error-prone.
  • Removed return value from openPopupOnItemClick() - returned true on mouse release on item - because it is inconsistent with other popups API and makes others misleading. It's also and unnecessary: you can use isWindowAppearing() after beginPopup() for a similar result.

Other Changes

  • Vulkan backend fixed and available!
  • Window: Fixed using non-zero pivot in setNextWindowPos() when the window is collapsed. (#3433)
  • Nav:
    • Fixed navigation resuming on first visible item when using gamepad. [@rokups]
    • Fixed using Alt to toggle the Menu layer when inside a Modal window. (#787)
  • Scrolling: Fixed setScrollHere() functions edge snapping when called during a frame where contentSize is changing (issue introduced in 1.78). (#3452).
  • InputText:
    • Added support for Page Up/Down in inputTextMultiline(). (#3430) [@Xipiryon]
    • Added selection helpers in InputTextCallbackData().
    • Added InputTextFlag.CallbackEdit to modify internally owned buffer after an edit (note that inputText() already returns true on edit, the callback is useful mainly to manipulate the underlying buffer while focus is active).
    • Fixed using InputTextFlag.Password with inputTextMultiline(). It is a rather unusual or useless combination of features but no reason it shouldn't work! (#3427, #3428)
    • Fixed minor scrolling glitch when erasing trailing lines in inputTextMultiline().
    • Fixed cursor being partially covered after using CTRL+End key.
    • Fixed callback's helper deleteChars() function when cursor is inside the deleted block. (#3454)
    • Made pressing Down arrow on the last line when it doesn't have a carriage return not move to the end of the line (so it is consistent with Up arrow, and behave same as Notepad and Visual Studio. Note that some other text editors instead would move the cursor to the end of the line). [@Xipiryon]
  • Tab Bar:
    • Added tabItemButton() to submit tab that behave like a button. (#3291) [@Xipiryon]
    • Added TabItemFlag.Leading and TabItemFlag.Trailing flags to position tabs or button at either end of the tab bar. Those tabs won't be part of the scrolling region, and when reordering cannot be moving outside of their section. Most often used with tabItemButton(). (#3291) [@Xipiryon]
    • Added TabItemFlag.NoReorder flag to disable reordering a given tab.
    • Keep tab item close button visible while dragging a tab (independent of hovering state).
    • Fixed a small bug where closing a tab that is not selected would leave a tab hole for a frame.
    • Fixed a small bug where scrolling buttons (with TabBarFlag.FittingPolicyScroll) would generate an unnecessary extra draw call.
    • Fixed a small bug where toggling a tab bar from Reorderable to not Reorderable would leave tabs reordered in the tab list popup. [@Xipiryon]
  • dragFloat, dragScalar: Fixed SliderFlag.ClampOnInput not being honored in the special case where v_min == v_max. (#3361)
  • sliderInt, sliderScalar: Fixed reaching of maximum value with inverted integer min/max ranges, both with signed and unsigned types. Added reverse Sliders to Demo. (#3432, #3449) [@rokups]
  • Text: Bypass unnecessary formatting when using the textColored()/textWrapped()/textDisabled() helpers with a "%s" format string. (#3466)
  • CheckboxFlags: Display mixed-value/tristate marker when passed flags that have multiple bits set and stored value matches neither zero neither the full set.
  • BeginMenuBar: Fixed minor bug where cursorPosMax gets pushed to cursorPos prior to calling beginMenuBar() so e.g. calling the function at the end of a window would often add +itemSpacing.y to scrolling range.
  • treeNode, collapsingHeader: Made clicking on arrow toggle toggle the open state on the Mouse Down event rather than the Mouse Down+Up sequence, even if the .OpenOnArrow flag isn't set. This is standard behavior and amends the change done in 1.76 which only affected cases were OpenOnArrow flag was set. (This is also necessary to support full multi/range-select/drag and drop operations.)
  • Columns: Fix inverted clipRect being passed to renderer when using certain primitives inside of a fully clipped column. (#3475) [@szreder]
  • Popups, Tooltips: Fix edge cases issues with positioning popups and tool-tips when they are larger than viewport on either or both axises. [@rokups]
  • Fonts: addFontDefault() adjust its vertical offset based on floor(size/13) instead of always +1. Was previously done by altering displayOffset.y but wouldn't work for DPI scaled font.
  • Metrics: Various tweaks, listing windows front-to-back, greying inactive items when possible.
  • Demo: Add simple inputText() callbacks demo (aside from the more elaborate ones in Examples->Console).
  • Backends:
    • Vulkan:
      • Some internal refactor aimed at allowing multi-viewport feature to create their own render pass. (#3455, #3459) [@FunMiles]
      • Reworked buffer resize handling, fix for Linux/X11. (#3390, #2626) [@RoryO]
      • Switch validation layer to use ``VK_LAYER_KHRONOS_validation instead of VK_LAYER_LUNARG_standard_validation which is deprecated (#3459) [@FunMiles]

Tab Bar: tabItemButton() + TabItemFlag.Trailing

image

checkboxFlags() with visible tri-state (previously only in internals)

image

Original Changelogs

v1.78

3 years 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!

Breaking Changes

(Read carefully, not as scary as it sounds. If you maintain a language binding for dear imgui, you may want to evaluate how this might impact users, depending on the language provide dynamic dispatch functions, or simply let the low-level code handle it)

  • Obsoleted use of the trailing float power=1f parameter for those functions: [@ShironekoBen, @ocornut]
    • dragFloat(), dragFloat2(), dragFloat3(), dragFloat4(), dragFloatRange2(), dragScalar(), dragScalarN().
    • sliderFloat(), sliderFloat2(), sliderFloat3(), sliderFloat4(), sliderScalar(), sliderScalarN().
    • vSliderFloat(), vSliderScalar().
  • Replaced the final float power=1f argument with SliderFlags flags defaulting to None (aka 0, as with all our flags). In short, when calling those functions, if you omitted the 'power' parameter (likely in C++), you are not affected. DragInt, DragFloat, DragScalar: Obsoleted use of v_min > v_max to lock edits (introduced in 1.73, inconsistent, and was not demoed nor documented much, will be replaced a more generic ReadOnly feature).

Other Changes

  • Nav: Fixed clicking on void (behind any windows) from not clearing the focused window. This would be problematic e.g. in situation where the application relies on io.wantCaptureKeyboard flag being cleared accordingly. (bug introduced in 1.77 WIP on 2020/06/16) (#3344, #2880)
  • Window: Fixed clicking over an item which hovering has been disabled (e.g inhibited by a popup) from marking the window as moved.
  • Drag, Slider: Added SliderFlags parameters. - For float functions they replace the old trailing float power=1f parameter. (See #3361 and the "Breaking Changes" block above for all details). - Added SliderFlag.Logarithmic flag to enable logarithmic editing (generally more precision around zero), as a replacement to the old 'float power' parameter which was obsoleted. (#1823, #1316, #642) [@ShironekoBen, @AndrewBelt] - Added SliderFlag.ClampOnInput flag to force clamping value when using CTRL+Click to type in a value manually. (#1829, #3209, #946, #413). - Added SliderFlag.NoRoundToFormat flag to disable rounding underlying value to match precision of the display format string. (#642) - Added SliderFlag.NoInput flag to disable turning widget into a text input with CTRL+Click or Nav Enter.- Nav, Slider: Fix using keyboard/gamepad controls with certain logarithmic sliders where pushing a direction near zero values would be cancelled out. [@ShironekoBen]
  • dragFloatRange2, dragIntRange2: Fixed an issue allowing to drag out of bounds when both min and max value are on the same value. (#1441)
  • InputText, ImDrawList: Fixed assert triggering when drawing single line of text with more than ~16 KB characters. (Note that current code is going to show corrupted display if after clipping, more than 16 KB characters are visible in the same low-level DrawList::renderText() call. ImGui-level functions such as textUnformatted() are not affected. This is quite rare but it will be addressed later). (#3349)
  • Selectable: Fixed highlight/hit extent when used with horizontal scrolling (in or outside columns). Also fixed related text clipping when used in a column after the first one. (#3187, #3386)
  • Scrolling: Avoid setScroll(), setScrollFromPos() functions from snapping on the edge of scroll limits when close-enough by (WindowPadding - ItemPadding), which was a tweak with too many side-effects. The behavior is still present in SetScrollHere() functions as they are more explicitly aiming at making widgets visible. May later be moved to a flag.
  • Tab Bar: Allow calling setTabItemClosed() after a tab has been submitted (will process next frame).
  • InvisibleButton: Made public a small selection of ButtonFlags (previously in imgui_internal.h) and allowed to pass them to invisibleButton(): ButtonFlag.MouseButtonLeft/Right/Middle. This is a small but rather important change because lots of multi-button behaviors could previously only be achieved using lower-level/internal API. Now also available via high-level invisibleButton() with is a de-facto versatile building block to creating custom widgets with the public API.
  • Fonts: Fixed FontConfig::glyphExtraSpacing and FontConfig::pixelSnapH settings being pulled from the merged/target font settings when merging fonts, instead of being pulled from the source font settings.
  • DrawList: Thick anti-aliased strokes (> 1.0f) with integer thickness now use a texture-based path, reducing the amount of vertices/indices and CPU/GPU usage. (#3245) [@ShironekoBen] - This change will facilitate the wider use of thick borders in future style changes. - Requires an extra bit of texture space (~64x64 by default), relies on GPU bilinear filtering. - Set io.antiAliasedLinesUseTex = false to disable rendering using this method. - Clear FontAtlasFlag.NoBakedLines in FontAtlas::flags to disable baking data in texture.
  • DrawList: changed addCircle(), addCircleFilled() default num_segments from 12 to 0, effectively enabling auto-tessellation by default. Tweak tessellation in Style Editor->Rendering section, or by modifying the style.circleSegmentMaxError value. [@ShironekoBen]
  • DrawList: Fixed minor bug introduced in 1.75 where addCircle() with 12 segments would generate an extra vertex. (This bug was mistakenly marked as fixed in earlier 1.77 release). [@ShironekoBen]
  • Demo: Improved "Custom Rendering"->"Canvas" demo with a grid, scrolling and context menu. Also showcase using invisibleButton() with multiple mouse buttons flags.
  • Demo: Improved "Layout & Scrolling" -> "Clipping" section.
  • Demo: Improved "Layout & Scrolling" -> "Child Windows" section.
  • Style Editor: Added preview of circle auto-tessellation when editing the corresponding value.

Original Changelogs

v1.77

3 years 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!

Breaking Changes

(Read carefully, not as scary as it sounds. If you maintain a language binding for dear imgui, you may want to evaluate how this might impact users, depending on the language provide dynamic dispatch functions, or simply let the low-level code handle it)

  • Removed FontAtlas::addCustomRectRegular() unnecessary first argument ID. Please note that this is a Beta api and will likely be reworked in order to support multi-DPI across multiple monitor s.
  • Renamed openPopupOnItemClick() to openPopupContextItem(). Kept inline redirection function (will obsolete).
  • Removed beginPopupContextWindow(label: String, mouseButton: Int, alsoOverItems: Boolean) in favor of beginPopupContextWindow(label: String, flags: PopupFlag) with PopupFlag.NoOverItems.
  • Removed obsoleted calcItemRectClosestPoint() entry point (has been asserting since December 2017).

Other Changes

  • TreeNode: Fixed bug where beginDragDropSource() failed when the _OpenOnDoubleClick flag is enabled (bug introduced in 1.76, but pre-1.76 it would also fail unless the _OpenOnArrow flag was also set, and _OpenOnArrow is frequently set along with _OpenOnDoubleClick).
  • TreeNode: Fixed bug where dragging a payload over a treeNode() with either _OpenOnDoubleClick or _OpenOnArrow would open the node. (#143)
  • Windows: Fix unintended feedback loops when resizing windows close to main viewport edges. [@rokups]
  • Tabs: Added style.tabMinWidthForUnselectedCloseButton settings:
    • Set to 0f (default) to always make a close button appear on hover (same as Chrome, VS).
    • Set to Float.MAX_VALUE to only display a close button when selected (merely hovering is not enough).
    • Set to an intermediary value to toggle behavior based on width (same as Firefox).
  • Tabs: Added a TabItemFlag.NoTooltip flag to disable the tooltip for individual tab item (vs TabBarFlag.NoTooltip for entire tab bar). - [@Xipiryon] Popups: All functions capable of opening popups (openPopup*, beginPopupContext*) now take a new PopupFlags sets of flags instead of a mouse button index. The API is automatically backward compatible as PopupFlags is guaranteed to hold mouse button index in the lower bits.
  • Popups: Added PopupFlag.NoOpenOverExistingPopup for openPopup*/beginPopupContext* functions to first test for the presence of another popup at the same level.
  • Popups: Added PopupFlag.NoOpenOverItems for beginPopupContextWindow() - similar to testing for !isAnyItemHovered() prior to doing an openPopup().
  • Popups: Added PopupFlag.AnyPopupId and PopupFlag.AnyPopupLevel flags for isPopupOpen(), allowing to check if any popup is open at the current level, if a given popup is open at any popup level, if any popup is open at all.
  • Popups: Fix an edge case where programmatically closing a popup while clicking on its empty space would attempt to focus it and close other popups. (#2880)
  • Popups: Fix beginPopupContextVoid() when clicking over the area made unavailable by a modal. (#1636)
  • Popups: Clarified some of the comments and function prototypes.
  • Modals: beginPopupModal() doesn't set the WindowFlag.NoSavedSettings flag anymore, and will not always be auto-centered. Note that modals are more similar to regular windows than they are to popups, so api and behavior may evolve further toward embracing this. (#915, #3091). Enforce centering using e.g. setNextWindowPos(io.displaySize * 0.5f, Cond.Appearing, Vec2(0.5f)).
  • Metrics: Added a "Settings" section with some details about persistent ini settings.
  • Nav, Menus: Fix vertical wrap-around in menus or popups created with multiple appending calls to beginMenu()/endMenu() or beginPopup()/endPopup(). (#3223, #1207) [@rokups]
  • Drag and Drop: Fixed unintended fallback "..." tooltip display during drag operation when
  • drag source uses SourceNoPreviewTooltip flags. (#3160) [@rokups]
  • Columns: Lower overhead on column switches and switching to background channel.
  • Benefits Columns but was primarily made with Tables in mind!
  • Fonts: Fix getGlyphRangesKorean() end-range to end at 0xD7A3 (instead of 0xD79D). (#348, #3217) [@marukrap]
  • DrawList: Fixed an issue where draw command merging or primitive unreserve while crossing the VtxOffset boundary would lead to draw commands with wrong VtxOffset. (#3129, #3163, #3232, #2591) [@thedmd, @ShironekoBen, @sergeyn, @ocornut]
  • DrawList, DrawListSplitter, Columns: Fixed an issue where changing channels with different TextureId, VtxOffset would incorrectly apply new settings to draw channels. (#3129, #3163) [@ocornut, @thedmd, @ShironekoBen]
  • DrawList, DrawListSplitter, Columns: Fixed an issue where starting a split when current VtxOffset was not zero would lead to draw commands with wrong VtxOffset. (#2591)
  • DrawList, DrawListSplitter, Columns: Fixed an issue where starting a split right after a callback draw command would incorrectly override the callback draw command.
  • DrawList: Fixed minor bug introduced in 1.75 where addCircle() with 12 segments would generate an extra unrequired vertex. [@ShironekoBen]
  • Docs: Improved and moved font documentation to docs/FONTS.md so it can be readable on the web. Updated various links/wiki accordingly. Added FAQ entry about DPI. (#2861) [@ButternCream, @ocornut]
  • Backends: OpenGL: Fixed handling of GL 4.5+ glClipControl(GL_UPPER_LEFT) by inverting the projection matrix top and bottom values. (#3143, #3146) [@u3shit]
  • Examples: GLFW+Vulkan, SDL+Vulkan: Fix for handling of minimized windows. (#3259)

Original Changelogs