Releases: kotlin-graphics/imgui
1.89.7-1
1.89.7
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.hoverDelayNormaltostyle.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: (ocornut/imgui#6512, ocornut/imgui#3909, ocornut/imgui#517)
- Obsoleted 
setItemAllowOverlap(): it didn't and couldn't work reliably since 1.89 (2022-11-15), and relied on ambiguously defined design. UsesetNextItemAllowOverlap()before item instead. - Added 
setNextItemAllowOverlap()(called before an item) as a replacement for usingsetItemAllowOverlap()(called after an item). This is roughly equivalent to using the legacysetItemAllowOverlap()call (public API) +ButtonFlag,AllowOverlap(internal). - Renamed 'TreeNodeFlag.AllowItemOverlap
toTreeNodeFlag,AllowOverlap` for consistency. - Renamed 
SelectableFlag.AllowItemOverlaptoSelectableFlag.AllowOverlapfor consistency. 
 - Obsoleted 
 
Other Changes:
- Tooltips/IsItemHovered() related changes:
- Tooltips: Added 
setItemTooltip()andbeginItemTooltip()helper functions. - They are shortcuts for the common idiom of using 
isItemHovered().setItemTooltip("Hello") == if (isItemHovered(HoveredFlag.Tooltip)) setTooltip("Hello")beginItemTooltip() == isItemHovered(HoveredFlag.Tooltip) && beginTooltip()
The newly addedHoveredFlag.Tooltipis meant to facilitate standardizing mouse hovering delays and rules for a given application. The previously common idiom of using 'if (isItemHovered()) setTooltip(...)' won't use delay or stationary test.
 - IsItemHovered: Added 
HoveredFlag.Stationaryto require mouse being stationary when hovering a new item. Addedstyle.hoverStationaryDelay(~0.15 sec). Once the mouse has been stationary once the state is preserved for same item. (ocornut/imgui#1485) - IsItemHovered: Added 
HoveredFlag.ForTooltipas a shortcut for pulling flags fromstyle.hoverFlagsForTooltipMouseorstyle.hoverFlagsForTooltipNavdepending on active inputs. (ocornut/imgui#1485)style.hoverFlagsForTooltipMousedefaults toHoveredFlag.Stationary | HoveredFlag.DelayShort.style.hoverFlagsForTooltipNavdefaults toHoveredFlag.NoSharedDelay | HoveredFlag.DelayNormal.
 - Tooltips: Tweak default offset for non-drag and drop tooltips so underlying items isn't covered as much. (Match offset for drag and drop tooltips)
 - IsItemHovered: Tweaked default value of 
style.hoverDelayNormalfrom 0.30 to 0.40, Tweaked default value ofstyle.hoverDelayShortfrom 0.10 to 0.15. (ocornut/imgui#1485) - IsItemHovered: Added 
HoveredFlag.AllowWhenOverlappedByWindowto ignore window-overlap only. OptionHoveredFlag.AllowWhenOverlappednow expand into a combination of both.AllowWhenOverlappedByWindow + .AllowWhenOverlappedByItem, matching old behavior. 
 - Tooltips: Added 
 - Overlapping items: (ocornut/imgui#6512, ocornut/imgui#3909, ocornut/imgui#517)
- Most item types should now work with 
setNextItemAllowOverlap(). (ocornut/imgui#6512, ocornut/imgui#3909, ocornut/imgui#517) - Fixed first frame of an overlap highlighting underlying item if previous frame didn't hover anything.
 - IsItemHovered: Changed to return false when querying an item using AllowOverlap mode which is being overlapped. Added 
HoveredFlag.AllowWhenOverlappedByItemto opt-out. (ocornut/imgui#6512, ocornut/imgui#3909, ocornut/imgui#517) - Selectable, TreeNode: When using 
SelectableFlag.AllowOverlap/TreeNodeFlag.AllowOverlapand holding item held, overlapping widgets won't appear as hovered. (ocornut/imgui#6512, ocornut/imgui#3909) 
 - Most item types should now work with 
 - IsWindowHovered: Added support for 
HoveredFlag.Stationary. - IsWindowHovered, IsItemHovered: Assert when passed any unsupported flags.
 - Tables: Fixed a regression in 1.89.6 leading to the first column of tables with either ScrollX or ScrollY flags from being impossible to resize. (ocornut/imgui#6503)
 - CollapsingHeader/TreeNode: Fixed text padding when using 
.Framed+.Leafflags. (ocornut/imgui#6549) - InputText: Fixed not returning true when buffer is cleared while using the 
InputTextFlag.EscapeClearsAllflag. (ocornut/imgui#5688, ocornut/imgui#2620) - InputText: Fixed a crash on deactivating a ReadOnly buffer. (ocornut/imgui#6570, ocornut/imgui#6292, ocornut/imgui#4714)
 - InputText: 
InputTextCallbackData::insertCharsaccept(null, null)range, in order to conform to common idioms (e.g. passing .data(), .data() + .size() from a null string). (ocornut/imgui#6565, ocornut/imgui#6566, ocornut/imgui#3615) - Combo: Made simple/legacy Combo() function not returns true when picking already selected item. This is consistent with other widgets. If you need something else, you can use BeginCombo(). (ocornut/imgui#1182)
 - Clipper: Rework inner logic to allow functioning with a zero-clear constructor. This is order to facilitate usage for language bindings (e.g cimgui or dear_binding) where user may not be calling a constructor manually. (ocornut/imgui#5856)
 - Drag and Drop: Apply default behavior of drag source not reporting itself as hovered at lower-level, so 
drag,slider,input, Plot widgets are fulfilling it. (Behavior doesn't apply whenDragDropFlag.SourceNoDisableHoveris set). - Modals: In the case of nested modal, made sure that focused or appearing windows are moved below the lowest blocking modal (rather than the highest one). (ocornut/imgui#4317)
 - Debug Tools: Added 
io.configDebugIniSettingsoption to save .ini data with extra comments. Currently mainly for inspecting Docking .ini data, but makes saving slower. - Demo: Added more developed Widgets->Tooltips section. (ocornut/imgui#1485)
 - Backends: OpenGL3: Fixed support for 
glBindSampler()backup/restore on ES3. (ocornut/imgui#6375, ocornut/imgui#6508) [@jsm174] - Backends: OpenGL3: Fixed erroneous use 
glGetIntegerv(GL_CONTEXT_PROFILE_MASK)on contexts lower than 3.2. (ocornut/imgui#6539, ocornut/imgui#6333) [@krumelmonster]
Backends: GLFW: AcceptglfwGetTime()` not returning a monotonically increasing value. This seems to happens on some Windows setup when peripherals disconnect, and is likely to also happen on browser+Emscripten. Matches similar 1.89.4 fix in SDL backend. (ocornut/imgui#6491) 
1.89.6
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:
- Clipper: Renamed 
forceDisplayRangeByIndices()toincludeRangeByIndices(), kept inline redirection function (introduced in 1.86 and rarely used). (ocornut/imgui#6424, ocornut/imgui#3841) 
Other Changes:
- Window: Fixed resizing from upper border when 
io.configWindowsMoveFromTitleBarOnlyis set. (ocornut/imgui#6390) - Tables: Fixed a small miscalculation in 
tableHeader()leading to an empty tooltip showing when a sorting column has no visible name. (ocornut/imgui#6342) - InputText: Avoid setting 
io.wantTextInputNextFrameduring the deactivation frame. (ocornut/imgui#6341) - Drag, Sliders: if the format string doesn't contain any 
%, CTRL+Click to input text will use the default format specifier for the type. Allow display/input of raw value when using "enums" patterns (display label instead of value) + allow using when value is hidden. (ocornut/imgui#6405) - Nav: Record/restore preferred position on each given axis after a movement on that axis, then score movement on the other axis using this as a bias. This allows going up and down between e.g. a large header spanning horizontal space and three-ways-columns, landing on the same column as before.
 - Nav: Fixed navigation within tables/columns where item boundaries goes beyond columns limits, unclipped bounding boxes would interfere with other columns. (ocornut/imgui#2221)
 - Nav: Fixed CTRL+Tab into a root window with only childs with 
_NavFlattenedflags erroneously initializing default nav layer to menu layer. - Menus: Fixed an issue when opening a menu hierarchy in a given menu-bar would allow opening another via simple hovering. (ocornut/imgui#3496, ocornut/imgui#4797)
 - Fonts: Fixed crash when merging fonts and the first font has no valid glyph. (ocornut/imgui#6446)
 - Fonts: Fixed crash when manually specifying an EllipsisChar that doesn't exist. (ocornut/imgui#6480)
 - Debug Tools: Debug Log: Fixed not parsing 0xXXXXXXXX values for geo-locating on mouse hover hover when the identifier is at the end of the line. (ocornut/imgui#5855)
 - Debug Tools: Added 
io.configDebugIgnoreFocusLossoption to disableio.addFocusEvent(false)handling. May facilitate interactions with a debugger when focus loss leads to clearing inputs data. (ocornut/imgui#4388, ocornut/imgui#4921) - Backends: Clear bits sets 
io.backendFlagson backendshutdown(). (ocornut/imgui#6334, https://github.com/ocornut/imgui/pull/6335]
Potentially this would facilitate switching runtime backend mid-session. - Backends: OpenGL3: Restore front and back polygon mode separately when supported by context (Desktop 3.0, 3.1, or 3.2+ with compat bit). (ocornut/imgui#6333)
 - Backends: OpenGL3: Support for glBindSampler() backup/restore on ES3. (ocornut/imgui#6375)
 
1.89.5
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:
- InputText: Reworked prev/next-word behavior to more closely match Visual Studio text editor. Include '.' as a delimiter and alter varying subtle behavior with how blanks and separators are treated when skipping words. (ocornut/imgui#6067)
 - InputText: Fixed a tricky edge case, ensuring value is always written back on the frame where 
isItemDeactivated()returnstrue, in order to allow usage without user retaining underlying data. While we don't really want to encourage user not retaining underlying data, in the absence of a "late commit" behavior/flag we understand it may be desirable to take advantage of this trick. (ocornut/imgui#4714) - Drag, Sliders: Fixed parsing of text input when '+' or '#' format flags are used in the format string. (ocornut/imgui#6259) [@idbrii]
 - Nav: Made Ctrl+Tab/Ctrl+Shift+Tab windowing register ownership to held modifier so it doesn't interfere with other code when remapping those actions. (ocornut/imgui#4828, ocornut/imgui#3255, ocornut/imgui#5641)
 - Nav: Made PageUp/PageDown/Home/End navigation also scroll parent windows when necessary to make the target location fully visible (same as e.g. arrow keys).
 - ColorEdit: Fixed shading of S/V triangle in Hue Wheel mode. (ocornut/imgui#5200, ocornut/imgui#6254)
 - TabBar: Tab-bars with 
TabBarFlag.FittingPolicyScrollcan be scrolled with horizontal mouse-wheel (or Shift + WheelY). (ocornut/imgui#2702) - Rendering: Using adaptive tessellation for RadioButton, ColorEdit preview circles, Windows Close and Collapse Buttons.
 - ButtonBehavior: Fixed an edge case where changing widget type/behavior while active and using same id could lead to an assert. (ocornut/imgui#6304)
 - (WIP) IO: Input queue trickling adjustment for touch screens. Fixes single-tapping to move simulated mouse and immediately click on a widget that is using the 
ButtonFlag.AllowItemOverlappolicy. (ocornut/imgui#2702, ocornut/imgui#4921)- This only works if the backend can distinguish TouchScreen vs Mouse. See 'Demo->Tools->Metrics->Inputs->Mouse Source' to verify.
 - Fixed tapping on BeginTabItem() on a touch-screen. (ocornut/imgui#2702)
 - Fixed tapping on CollapsingHeader() with a close button on a touch-screen.
 - Fixed tapping on TreeNode() using ImGuiTreeNodeFlags_AllowItemOverlap on a touch-screen.
 - Fixed tapping on Selectable() using ImGuiSelectableFlags_AllowItemOverlap on a touch-screen.
 - Fixed tapping on TableHeader() on a touch-screen.
 
 - IO: Added 
io.addMouseSourceEvent()andMouseSourceenum. This is to allow backend to specify actual event source between Mouse/TouchScreen/Pen. (ocornut/imgui#2702, ocornut/imgui#2334, ocornut/imgui#2372, ocornut/imgui#3453, ocornut/imgui#5693) - IO: Fixed support for calling 
io.addXXXXfunctions from inactive context (wrongly advertised as supported in 1.89.4). (ocornut/imgui#6199, ocornut/imgui#6256, ocornut/imgui#5856) - Backends: OpenGL3: Fixed GL loader crash when 
GL_VERSIONreturnsnull. (ocornut/imgui#6154, ocornut/imgui#4445, ocornut/imgui#3530) - Backends: OpenGL3: Properly restoring "no shader program bound" if it was the case prior to running the rendering function. (ocornut/imgui#6267, ocornut/imgui#6220, ocornut/imgui#6224)
 - (WIP) Backends: GLFW: Added support on Win32 only for 
io.addMouseSourceEvent()to discriminate Mouse/TouchScreen/Pen. (ocornut/imgui#2334, ocornut/imgui#2702) - Backends: GLFW: Fixed key modifiers handling on secondary viewports. (ocornut/imgui#6248, ocornut/imgui#6034)
 - TestSuite: Added variety of new regression tests and improved/amended existing ones
in imgui_test_engine repository (at the moment still private until some license issues gets clarified and solved). 
1.89.4
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()topushTabStop()/popTabStop(). - Tooltips: Added 
Booleanreturn value tobeginTooltip()for API consistency. Please only submit contents and callendTooltip()ifbeginTooltip()returnstrue. In reality the function will currently always returntrue, but further changes down the line may change this, best to clarify API sooner. Updated demo code accordingly. 
Other Changes:
- Nav: Tabbing now cycles through all items when 
ConfigFlag.NavEnableKeyboardis set. (ocornut/imgui#3092, ocornut/imgui#5759, ocornut/imgui#787)
While this was generally desired and requested by many, note that its addition means that some types of UI may become more fastidious to use TAB key with, if the navigation cursor cycles through too many items. You can mark items items as not tab-spottable:- Public API: 
pushTabStop(false)/popTabStop(). - Internal: 
pushItemFlag(temFlag.NoTabStop, true). - Internal: Directly pass 
ItemFlag.NoTabStoptoitemAdd()for custom widgets. 
 - Public API: 
 - Nav: Tabbing/Shift-Tabbing can more reliably be used to step out of an item that is not tab-stoppable. (ocornut/imgui#3092, ocornut/imgui#5759, ocornut/imgui#787)
 - Nav: Made Enter key submit the same type of Activation event as Space key, allowing to press buttons with Enter. (ocornut/imgui#5606)
 - (Enter emulates a "prefer text input" activation vs. Space emulates a "prefer tweak" activation which is to closer to gamepad controls).
 - Nav: Fixed an issue with Gamepad navigation when the movement lead to a scroll and frame time > repeat rate. Triggering a new move request on the same frame as a move result lead to an incorrect calculation and loss of navigation id. (ocornut/imgui#6171)
 - Nav: Fixed 
setItemDefaultFocus()from not scrolling when item is partially visible. (ocornut/imgui#2814, ocornut/imgui#2812) [@DomGries] - Tables: Fixed an issue where user's Y cursor movement within a hidden column would have side-effects.
 - IO: Lifted constraint to call 
io.addEventXXXfunctions from current context. (ocornut/imgui#4921, ocornut/imgui#5856, ocornut/imgui#6199) - InputText: Fixed not being able to use CTRL+Tab while an InputText() using Tab for completion or text data is active (regression from 1.89).
 - Drag and Drop: Fixed handling of overlapping targets when smaller one is submitted before and can accept the same data type. (ocornut/imgui#6183).
 - Drag and Drop: Clear drag and drop state as soon as delivery is accepted in order to avoid interferences. (ocornut/imgui#5817, ocornut/imgui#6183)
 - Debug Tools: Added 
io.configDebugBeginReturnValueOnce/io.configDebugBeginReturnValueLoopoptions to simulate Begin/BeginChild returning false to facilitate debugging user behavior. - Demo: Updated to test return value of 
beginTooltip(). - Backends: OpenGL3: Fixed restoration of a potentially deleted OpenGL program. If an active program was pending deletion, attempting to restore it would error. (ocornut/imgui#6220, ocornut/imgui#6224)
 - Examples: Updated all examples application to enable 
ConfigFlag.NavEnableKeyboardandConfigFlag.NavEnableGamepadby default. (ocornut/imgui#787) - Internals: Misc tweaks to facilitate applying an explicit-context patch. (ocornut/imgui#5856)
 
1.89.3
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.
 
Changes
- Added 
SeparatorText()widget. (ocornut/imgui#1643)
- Added to style:float SeparatorTextBorderSize.
- Added to style:ImVec2 SeparatorTextAlign,ImVec2 SeparatorTextPadding. - Tables: Raised max Columns count from 64 to 512. The previous limit was due to using 64-bit integers but we moved to bits-array and tweaked the system enough to ensure no performance loss. (ocornut/imgui#6094, ocornut/imgui#5305, ocornut/imgui#4876, ocornut/imgui#3572)
 - Tables: Solved an ID conflict issue with multiple-instances of a same table, due to how unique table instance id was generated. (ocornut/imgui#6140)
 - Inputs, Scrolling: Made horizontal scroll wheel and horizontal scroll direction consistent across backends/os. (ocornut/imgui#4019, ocornut/imgui#6096, ocornut/imgui#1463)
- Clarified that 'wheel_y > 0.0f' scrolls Up, 'wheel_y > 0.0f' scrolls Down.
 - Clarified that 'wheel_x > 0.0f' scrolls Left, 'wheel_x > 0.0f' scrolls Right.
 - Shift+WheelY support on non-OSX machines was already correct. (ocornut/imgui#2424, ocornut/imgui#1463) (whereas on OSX machines Shift+WheelY turns into WheelX at the OS level).
 - If you use a custom backend, you should verify horizontal wheel direction.
- Axises are flipped by OSX for mouse & touch-pad when 'Natural Scrolling' is on.
 - Axises are flipped by Windows for touch-pad when 'Settings->Touchpad->Down motion scrolls up' is on.
 - You can use Demo->Tools->Debug Log->IO to visualize values submitted to Dear ImGui.
 
 
 - Window: Avoid rendering shapes for hidden resize grips.
 - Text: Fixed layouting of wrapped-text block skipping successive empty lines, regression from the fix in 1.89.2. (ocornut/imgui#5720, ocornut/imgui#5919)
 - Text: Fixed clipping of single-character "..." ellipsis (U+2026 or U+0085) when font is scaled. Scaling wasn't taken into account, leading to ellipsis character straying slightly out of its expected boundaries. (ocornut/imgui#2775)
 - Text: Tweaked rendering of three-dots "..." ellipsis variant. (ocornut/imgui#2775, ocornut/imgui#4269)
 - InputText: Added support for Ctrl+Delete to delete up to end-of-word. (Not adding Super+Delete to delete to up to end-of-line on OSX, as OSX doesn't have it) (ocornut/imgui#6067)
 - InputText: On OSX, inhibit usage of Alt key to toggle menu when active (used for work skip).
 - Menus: Fixed layout of MenuItem()/BeginMenu() when label contains a '\n'. (ocornut/imgui#6116)
 - ColorEdit, ColorPicker: Fixed hue/saturation preservation logic from interfering with the displayed value (but not stored value) of others widgets instances. (ocornut/imgui#6155)
 - PlotHistogram, PlotLines: Passing negative sizes honor alignment like other widgets.
 - Combo: Allow SetNextWindowSize() to alter combo popup size. (ocornut/imgui#6130)
 - Fonts: Assert that in each GlyphRanges[] pairs first is <= second.
 - ImDrawList: Added missing early-out in AddPolyline() and AddConvexPolyFilled() when color alpha is zero.
 - Misc: Most text functions treat "%s" as a shortcut to no-formatting. (ocornut/imgui#3466)
 - Backends: GLFW: Registering custom low-level mouse wheel handler to get more accurate scrolling impulses on Emscripten. (ocornut/imgui#4019, ocornut/imgui#6096) [@ocornut, @wolfpld, @tolopolarity]
 - Backends: GLFW: Added ImGui_ImplGlfw_SetCallbacksChainForAllWindows() to instruct backend to chain callbacks even for secondary viewports/windows. User callbacks may need to test the 'window' parameter. (ocornut/imgui#6142)
 
1.89.2
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:
- Tables, Nav, Scrolling: fixed scrolling functions and focus tracking with frozen rows and frozen columns. Windows now have a better understanding of outer/inner decoration sizes, which should later lead us toward more flexible uses of menu/status bars. (ocornut/imgui#5143, ocornut/imgui#3692)
 - Tables, Nav: frozen columns are not part of menu layer and can be crossed over. (ocornut/imgui#5143, ocornut/imgui#3692)
 - Tables, Columns: fixed cases where empty columns may lead to empty ImDrawCmd. (ocornut/imgui#4857, ocornut/imgui#5937)
 - Tables: fixed matching width of synchronized tables (multiple tables with same id) when only some instances have a vertical scrollbar and not all. (ocornut/imgui#5920)
 - Fixed cases where CTRL+Tab or Modal can occasionally lead to the creation of ImDrawCmd with zero triangles, which would makes the render loop of some backends assert (e.g. Metal with debugging, Allegro). (ocornut/imgui#4857, ocornut/imgui#5937)
 - Inputs, IO: reworked 
ImGuiMod_Shortcutto redirect to Ctrl/Super at runtime instead of compile-time, being consistent with our support for io.ConfigMacOSXBehaviors and making it easier for bindings generators to process that value. (ocornut/imgui#5923, ocornut/imgui#456) - Inputs, Scrolling: better selection of scrolling window when hovering nested windows and when backend/OS is emitting dual-axis wheeling inputs (typically touch pads on macOS). We now select a primary axis based on recent events, and select a target window based on it. We expect this behavior to be further improved/tweaked. (ocornut/imgui#3795, ocornut/imgui#4559) [@ocornut, @folays]
 - InputText: fixed cursor navigation when pressing Up Arrow on the last character of a multi-line buffer which doesn't end with a carriage return. (ocornut/imgui#6000)
 - Text: fixed layouting of wrapped-text block when the last source line is above the clipping region. Regression added in 1.89. (ocornut/imgui#5720, ocornut/imgui#5919)
 - Misc: added 
GetItemID()in public API. It is not often expected that you would use this, but it is useful for Shortcut() and upcoming owner-aware input functions which wants to be implemented with public API. - Fonts: imgui_freetype: fixed a packing issue which in some occurrences would prevent large amount of glyphs from being packed correctly. (ocornut/imgui#5788, ocornut/imgui#5829)
 - Fonts: added a 
void* UserDatafield inImFontAtlas, as a convenience for use by applications using multiple font atlases. - Demo: simplified "Inputs" section, moved contents to Metrics->Inputs.
 - Debug Tools: Metrics: added "Inputs" section, moved from Demo for consistency.
 - Backends: GLFW: Fixed mods state on Linux when using Alt-GR text input (e.g. German keyboard layout), which could lead to broken text input. Revert a 2022/01/17 change were we resumed using mods provided by GLFW, turns out they are faulty in this specific situation. (ocornut/imgui#6034)
 
1.79
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::displayOffsetin favor ofFontConfig::glyphOffset.displayOffsetwas 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 useddisplayOffsetit was probably in association to rasterizing a font at a specific size, in which case the corresponding offset may be reported intoglyphOffset. If you scaled this value after callingaddFontDefault(), this is now done automatically. (#1619) ListClipper: Renamed constructor parameters which created an ambiguous alternative to using theListClipper::begin()function, with misleading edge cases. Always useListClipper::begin()!- Style: Renamed 
style.tabMinWidthForUnselectedCloseButtontostyle.tabMinWidthForCloseButton. - Renamed 
SliderFlag.ClampOnInputtoSliderFlag.AlwaysClamp. - Renamed 
openPopupContextItem()back toopenPopupOnItemClick(), 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 useisWindowAppearing()afterbeginPopup()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 wherecontentSizeis 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.CallbackEditto modify internally owned buffer after an edit (note thatinputText()already returns true on edit, the callback is useful mainly to manipulate the underlying buffer while focus is active). - Fixed using 
InputTextFlag.PasswordwithinputTextMultiline(). 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]
 
 - Added support for Page Up/Down in 
 - Tab Bar:
- Added 
tabItemButton()to submit tab that behave like a button. (#3291) [@Xipiryon] - Added 
TabItemFlag.LeadingandTabItemFlag.Trailingflags 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 withtabItemButton(). (#3291) [@Xipiryon] - Added 
TabItemFlag.NoReorderflag 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]
 
 - Added 
 dragFloat,dragScalar: FixedSliderFlag.ClampOnInputnot 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 
cursorPosMaxgets pushed tocursorPosprior to callingbeginMenuBar()so e.g. calling the function at the end of a window would often add+itemSpacing.yto 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.OpenOnArrowflag isn't set. This is standard behavior and amends the change done in 1.76 which only affected cases wereOpenOnArrowflag was set. (This is also necessary to support full multi/range-select/drag and drop operations.)- Columns: Fix inverted 
clipRectbeing 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 alteringdisplayOffset.ybut 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_validationwhich is deprecated (#3459) [@FunMiles] 
 
 - Vulkan:
 
Tab Bar: tabItemButton() + TabItemFlag.Trailing
checkboxFlags() with visible tri-state (previously only in internals)
1.78
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=1fparameter 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=1fargument withSliderFlagsflags defaulting toNone(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.wantCaptureKeyboardflag 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 
SliderFlagsparameters.
- For float functions they replace the old trailingfloat power=1fparameter. (See #3361 and the "Breaking Changes" block above for all details).
- AddedSliderFlag.Logarithmicflag 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]
- AddedSliderFlag.ClampOnInputflag to force clamping value when using CTRL+Click to type in a value manually. (#1829, #3209, #946, #413).
- AddedSliderFlag.NoRoundToFormatflag to disable rounding underlying value to match precision of the display format string. (#642)
- AddedSliderFlag.NoInputflag 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 astextUnformatted()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 toinvisibleButton():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-levelinvisibleButton()with is a de-facto versatile building block to creating custom widgets with the public API. - Fonts: Fixed 
FontConfig::glyphExtraSpacingandFontConfig::pixelSnapHsettings 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.
- Setio.antiAliasedLinesUseTex = falseto disable rendering using this method.
- ClearFontAtlasFlag.NoBakedLinesinFontAtlas::flagsto 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 thestyle.circleSegmentMaxErrorvalue. [@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.
 
1.77
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()toopenPopupContextItem(). Kept inline redirection function (will obsolete). - Removed 
beginPopupContextWindow(label: String, mouseButton: Int, alsoOverItems: Boolean)in favor ofbeginPopupContextWindow(label: String, flags: PopupFlag)withPopupFlag.NoOverItems. - Removed obsoleted 
calcItemRectClosestPoint()entry point (has been asserting since December 2017). 
Other Changes
- TreeNode: Fixed bug where 
beginDragDropSource()failed when the_OpenOnDoubleClickflag is enabled (bug introduced in 1.76, but pre-1.76 it would also fail unless the_OpenOnArrowflag was also set, and_OpenOnArrowis frequently set along with_OpenOnDoubleClick). - TreeNode: Fixed bug where dragging a payload over a 
treeNode()with either_OpenOnDoubleClickor_OpenOnArrowwould open the node. (#143) - Windows: Fix unintended feedback loops when resizing windows close to main viewport edges. [@rokups]
 - Tabs: Added 
style.tabMinWidthForUnselectedCloseButtonsettings:- Set to 0f (default) to always make a close button appear on hover (same as Chrome, VS).
 - Set to 
Float.MAX_VALUEto 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.NoTooltipflag to disable the tooltip for individual tab item (vsTabBarFlag.NoTooltipfor entire tab bar). - [@Xipiryon]
Popups: All functions capable of opening popups (openPopup*,beginPopupContext*) now take a newPopupFlagssets of flags instead of a mouse button index. The API is automatically backward compatible asPopupFlagsis guaranteed to hold mouse button index in the lower bits. - Popups: Added 
PopupFlag.NoOpenOverExistingPopupforopenPopup*/beginPopupContext*functions to first test for the presence of another popup at the same level. - Popups: Added 
PopupFlag.NoOpenOverItemsforbeginPopupContextWindow()- similar to testing for!isAnyItemHovered()prior to doing anopenPopup(). - Popups: Added 
PopupFlag.AnyPopupIdandPopupFlag.AnyPopupLevelflags forisPopupOpen(), 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 theWindowFlag.NoSavedSettingsflag 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()orbeginPopup()/endPopup(). (#3223, #1207) [@rokups] - Drag and Drop: Fixed unintended fallback "..." tooltip display during drag operation when
 - drag source uses 
SourceNoPreviewTooltipflags. (#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)
 


