Releases: HexaEngine/Hexa.NET.ImGui
2.2.2 .NET 9.0 and 6.0 support.
- No API changes.
- Re-targeted to net9.0 net8.0 net7.0 net6.0 netstandard2.1 netstandard2.0
Full Changelog: 2.2.1...2.2.2
2.2.1 Hotfix for Win32 and android. (No api changes)
- No API changes.
- Added missing function from ImGui_ImplWin32
- Hopefully fixed android native lib packing with build targets.
Full Changelog: 2.2.0...2.2.1
2.2.0 Dear ImGui 1.91.5 + new backends.
Hexa.NET.ImGui Changes
- Updated to Dear ImGui 1.91.5
- Added backends for D3D10 and D3D9. #25 #17
- Added support for android and added an example. #17
- Fixes issues with MacOS backends #24
New Sponsors
π Huge thanks to our newest supporters:
@qian-o, @NotNite and Mr Villa
Forwarded from https://github.com/ocornut/imgui/releases/tag/v1.91.5 (removed @ to avoid spam)
Changes (since v1.91.4)
Breaking Changes:
- Commented out pre-1.87 IO system (equivalent to using
IMGUI_DISABLE_OBSOLETE_KEYIO
orIMGUI_DISABLE_OBSOLETE_FUNCTIONS
before).io.KeyMap[]
andio.KeysDown[]
are removed (obsoleted February 2022).io.NavInputs[]
andImGuiNavInput
enum are removed (obsoleted July 2022).- Pre-1.87 backends are not supported:
- backends need to call
io.AddKeyEvent()
,io.AddMouseEvent()
instead of writing toio.KeysDown[]
,io.MouseDown[]
fields. - backends need to call
io.AddKeyAnalogEvent()
for gamepad values instead of writing toio.NavInputs[]
fields.
- backends need to call
- For more references:
- read ocornut/imgui#4921
- read Changelogs for 1.87 and 1.88. Read API BREAKING CHANGES section of imgui.cpp.
- If you have trouble updating a very old codebase using legacy backend-specific key codes:
consider updating to 1.91.4 first, then #define IMGUI_DISABLE_OBSOLETE_KEYIO, then update to latest. - Obsoleted
ImGuiKey_COUNT
(it was unusually error-prone/misleading since valid keys don't start at 0). Probably useImGuiKey_NamedKey_BEGIN
/ImGuiKey_NamedKey_END
instead?
- Fonts: removed const qualifiers from most font functions in prevision for upcoming fonts improvements.
Other changes:
- Selectable: selected
Selectable
useImGuiCol_Header
instead of an arbitrary lerp between_Header
and_HeaderHovered
which was introduced v1.91 (#8106, #1861) - Buttons: using
ImGuiItemFlags_ButtonRepeat
makes default button behavior use_PressedOnClick
instead of_PressedOnClickRelease
when unspecified. - InputText: fixed a bug (regression in 1.91.2) where modifying text buffer within a callback would sometimes prevents further appending to the buffer.
- Tabs, Style: made
ImGuiCol_TabDimmedSelectedOverline
alpha 0 (not visible) in default styles as the current look is not right (butImGuiCol_TabSelectedOverline
stays the same). - Log/Capture: added experimental
io.ConfigWindowsCopyContentsWithCtrlC
option to automatically copy window contents into clipboard using CTRL+C. This is experimental because (1) it currently breaks on nested Begin/End, (2) text output quality varies, and (3) text output comes in submission order rather than spatial order. - Log/Capture: better decorating of
BeginMenu()
andTabItem()
output. - Log/Capture: a non terminated log ends automatically in the window which called it.
- imgui_freetype: Fixed a crash in build font atlas when using merged fonts and the first font in a merged set has no loaded glyph. (#8081)
- Backends: DX12: Unmap() call specify written range. The range is informational and may be used by debug tools.
- Backends: SDL2: Replace
SDL_Vulkan_GetDrawableSize()
forward declaration with the actual include. (#8095, #7967, #3190) [sev-] - Backends: SDL2, SDL3:
SDL_EVENT_MOUSE_WHEEL
event doesn't require dividing by 100.0f on Emscripten target. (#4019, #6096, #1463) - Examples: SDL3+Vulkan: Added example. (#8084, #8085)
- Examples: Android+OpenGL: Using
ALooper_pollOnce()
instead ofALooper_pollAll()
which has been deprecated. (#8013) [feather179]
Changes from 1.91.4 to 1.91.5 in the Docking branch:
- Backends: GLFW: added Linux workaround for spurious mouse up events emitted while dragging and creating new viewports. Generally they would be interrupting a dragging operations. (#3158, #7733, #7922) [rokups, ocornut]
- Docking: fixed using
ImGuiDockNodeFlags_KeepAliveOnly
withDockSpaceOverViewport()
: the normally invisible space did erroneously claim mouse hover and could be potentially focused. (#8125) [kcbanner]
How the output of io.ConfigWindowsCopyContentsWithCtrlC
looks:
2.1.10 FreeType support and api improvements.
- Added missing overloads for ImGui InputText and related. (see #23)
- Optimized InputText return decoding. (see #23)
- Added FreeType support for colored emoji fonts (see #22)
Full Changelog: 2.1.9...2.1.10
2.1.9 Dear ImGui 1.91.4
Hexa.NET.ImGui Changes
- Updated to Dear ImGui 1.91.4.
- Added Native Backends. (incl. Win32, D3D11, D3D12, OpenGL2, OpenGL3, Vulkan and extra packages for SDL2 and GLFW) (see #17)
Forwarded from https://github.com/ocornut/imgui/releases/tag/v1.91.4 (removed @ to avoid spam)
Changes (since v1.91.3)
Breaking Changes:
- Style: renamed
ImGuiCol_NavHighlight
toImGuiCol_NavCursor
, for consistency with newly exposed and reworked features. Kept inline redirection enum (will obsolete). - The typedef for
ImTextureID
now defaults toImU64
instead ofvoid*
. (#1641)- This removes the requirement to redefine it for backends which are e.g. storing descriptor sets or other 64-bits structures when building on 32-bits archs (namely our DX12 and Vulkan backends). It therefore simplify various building scripts/helpers.
- You may have compile-time warnings if you were casting to
void*
instead ofImTextureID
when passing your types to functions takingImTextureID
values, e.g.ImGui::Image()
. In doubt it is almost always better to do an intermediateintptr_t
cast, since it allows casting any pointer/integer type without warning:- May warn:
ImGui::Image((void*)MyTextureData, ...);
- May warn:
ImGui::Image((void*)(intptr_t)MyTextureData, ...);
- Won't warn:
ImGui::Image((ImTextureID)(intptr_t)MyTextureData), ...);
- May warn:
- Note that you can always #define ImTextureID to be your own high-level structures (with dedicated constructors and extra render parameters) if you like.
- IO: moved
ImGuiConfigFlags_NavEnableSetMousePos
to standaloneio.ConfigNavMoveSetMousePos
bool. - IO: moved
ImGuiConfigFlags_NavNoCaptureKeyboard
to standaloneio.ConfigNavCaptureKeyboard
bool (note the inverted value!). (#2517, #2009). Kept legacy names (will obsolete) + code that copies settings once the first time. Dynamically changing the old value won't work. Switch to using the new value!
Other changes:
- IO: added
void* platform_io.Renderer_RenderState
which is set during theImGui_ImplXXXX_RenderDrawData()
of standard backends to expose selected render states to your draw callbacks. (#6969, #5834, #7468, #3590) - IO:
io.WantCaptureKeyboard
is never set whenImGuiConfigFlags_NoKeyboard
is enabled. (#4921) - Error Handling: turned a few more functions into recoverable errors. (#1651)
- Nav (Keyboard/Gamepad navigation):
- Nav: added
io.ConfigNavCursorVisibleAuto
andio.ConfigNavCursorVisibleAlways
to configure visibility of navigation cursor. (#1074, #2048, #7237, #8059, #3200, #787)- Set
io.ConfigNavCursorVisibleAuto = true
(default) to enable automatic toggling of cursor visibility (mouse click hide the cursor, arrow keys makes it visible). - Set
io.ConfigNavCursorVisibleAlways
to keep cursor always visible.
- Set
- Nav: added
NavSetCursorVisible(bool visible)
function to manipulate visibility of navigation cursor (e.g. set default state, or after some actions). (#1074, #2048, #7237, #8059) - Nav: added
io.ConfigNavEscapeClearFocusItem
andio.ConfigNavEscapeClearFocusWindow
to change how pressing Escape affects navigation. (#8059, #2048, #1074, #3200)- Set
io.ConfigNavEscapeClearFocusItem = true
(default) to clear focused item and highlight. - Set
io.ConfigNavEscapeClearFocusItem = false
for Escape to not have an effect. - Set
io.ConfigNavEscapeClearFocusWindow = true
to completely unfocus the Dear ImGui window, is for some reason your app relies on imgui focus to take other decisions.
- Set
- Nav: pressing Escape to hide the navigation cursor doesn't clear current location, so it may be restored when Ctrl+Tabbing back into the same window later.
- Nav: fixed Ctrl+Tab initiated with no focused window from skipping the top-most window. (#3200)
- Nav: navigation cursor is not rendered for items with
ImGuiItemFlags_NoNav
. Can be relevant when e.g activating a _NoNav item with mouse, then Ctrl+Tabbing back and forth.
- Nav: added
- Disabled: clicking a disabled item focuses parent window. (#8064)
- InvisibleButton, Nav: fixed an issue when
InvisibleButton()
would be navigable into but not display navigation highlight. Properly navigation on it by default. (#8057) - InvisibleButton: added
ImGuiButtonFlags_EnableNav
to enable navigation over the invisible button. (#8057) - Tooltips: fixed incorrect tooltip positioning when using keyboard/gamepad navigation (1.91.3 regression). (#8036)
- DrawList:
AddCallback()
added an optional size parameter allowing to copy and store any amount of user data for usage by callbacks: (#6969, #4770, #7665)- If
userdata_size == 0:
we copy/store theuserdata
argument as-is (existing behavior). It will be available unmodified inImDrawCmd::UserCallbackData
during render. - If
userdata_size > 0
, we copy/storeuserdata_size
bytes pointed to byuserdata
(new behavior). We store them in a buffer stored inside the drawlist.ImDrawCmd::UserCallbackData
will point inside that buffer so you have to retrieve data from there. Your callback may need to useImDrawCmd::UserCallbackDataSize
if you expect dynamically-sized data. - Note that we use a raw type-less copy.
- If
- Tables: fixed initial auto-sizing issue with synced-instances. (#8045, #7218)
- InputText: fixed an issue with not declaring ownership of Delete/Backspace/Arrow keys, preventing use of external shortcuts that are not guarded by an ActiveId check. (#8048) [geertbleyen]
- InputText: ensure mouse cursor shape is set regardless of whether keyboard mode is enabled or not. (#6417)
- InputScalar: added an assert to clarify that
ImGuiInputTextFlags_EnterReturnsTrue
is not
supported byInputFloat()
/InputInt()
/InputScalar()
etc. widgets. It actually never was. (#8065, #3946) - imgui_freetype: Added support for plutosvg (as an alternative to lunasvg) to render OpenType SVG fonts. Requires defining
IMGUI_ENABLE_FREETYPE_PLUTOSVG
along withIMGUI_ENABLE_FREETYPE
. Providing headers/librairies for plutosvg + plutovg is up to you (see #7927 for help). (#7927, #7187, #6591, #6607) [pthom] - Backends: DX11, DX12, SDLRenderer2/3. Vulkan, WGPU: expose selected state in
ImGui_ImplXXXX_RenderState
structures during render loop, for user draw callbacks. (#6969, #5834, #7468, #3590) - Backends: DX9, DX10, DX11, DX12, OpenGL, Vulkan, WGPU: Changed default texture sampler to Clamp instead of Repeat/Wrap. (#7468, #7511, #5999, #5502, #7230)
Changes from 1.91.3 to 1.91.4 in the Docking branch:
- Backends: changed all backends to allow enabling
ImGuiConfigFlags_ViewportsEnable
after initialization. (#5371)
2.1.7 Dear ImGui 1.91.3
Hexa.NET.ImGui Changes
- Updated to Dear ImGui 1.91.3.
- Moved internal functions to ImGuiP.XXX for better clarity to avoid misuse/unintentional use of the internal API. (see #16)
- Added aggressive inlining for native methods to improve performance.
- Bug fix for FunctionTable generation which generated empty spaces. (nothing serious)
New Sponsor
π A big thank you to @Doprez for their generous support! Their contributions have been invaluable in helping this project thrive.
Forwarded from https://github.com/ocornut/imgui/releases/tag/v1.91.3 (removed @ to avoid spam)
Changes (since v1.91.2)
Breaking Changes:
- Drags: treat v_min==v_max as a valid clamping range when != 0.0f. Zero is still a special value due to legacy reasons, unless using
ImGuiSliderFlags_ClampZeroRange
. (#7968, #3361, #76) - Drags: extended behavior of
ImGuiSliderFlags_AlwaysClamp
to includeImGuiSliderFlags_ClampZeroRange
. It considers v_min==v_max==0.0f as a valid clamping range (aka edits not allowed). Although unlikely, it you wish to only clamp on text input but want v_min==v_max==0.0f to mean unclamped drags, you can use_ClampOnInput
instead of_AlwaysClamp
. (#7968, #3361, #76)
Other changes:
- Error Handling: Enabled/improved error recovery systems. (#1651, #5654)
- Read https://github.com/ocornut/imgui/wiki/Error-Handling for a bit more details.
- Error recovery is provided as a way to facilitate:
- Recovery after a programming error. Native code or scripting language (the later tends to facilitate iterating on code while running).
- Recovery after running an exception handler or any error processing which may skip code after an error has been detected.
- Error recovery is not perfect nor guaranteed! It is a feature to ease development.
You not are not supposed to rely on it in the course of a normal application run. - Functions that support error recovery are using
IM_ASSERT_USER_ERROR()
instead ofIM_ASSERT()
. - By design, we do not allow error recovery to be 100% silent. One of the options needs to be enabled!
- Possible usage: facilitate recovery from errors triggered from a scripting language or after specific exceptions handlers. Surface errors to programmers in less aggressive ways.
- Always ensure that on programmers seats you have at minimum Asserts or Tooltips enabled when making direct imgui API calls! Otherwise it would severely hinder your ability to catch and correct mistakes!
- Added
io.ConfigErrorRecovery
to enable error recovery support. - Added
io.ConfigErrorRecoveryEnableAssert
to assert on recoverable errors. - Added
io.ConfigErrorRecoveryEnableDebugLog
to output to debug log on recoverable errors. - Added
io.ConfigErrorRecoveryEnableTooltip
to enable displaying an error tooltip on recoverable errors. The tooltip include a way to enable asserts if they were disabled. - All options are enabled by default.
- Windows: BeginChild(): made it possible to call
SetNextWindowSize()
on a child window usingImGuiChildFlags_ResizeX
,ImGuiChildFlags_ResizeY
in order to override its current size. (#1710, #8020) - Scrollbar: Shift+Click scroll to clicked location (pre-1.90.8 default). (#8002, #7328)
- Scrollbar: added
io.ConfigScrollbarScrollByPage
setting (default to true). Setio.ConfigScrollbarScrollByPage=false
to enforce always scrolling to clicked location. (#8002, #7328) - Drags: split
ImGuiSliderFlags_AlwaysClamp
into two distinct flags: (#7968, #3361, #76)ImGuiSliderFlags_AlwaysClamp
=ImGuiSliderFlags_ClampOnInput
+ImGuiSliderFlags_ClampZeroRange
.- Previously
_AlwaysClamp
only did the equivalent of_ClampOnInput
. - Added
ImGuiSliderFlags_ClampOnInput
which is now a subset of_AlwaysClamp
(note that it was the old name of_AlwaysClamp
, but we are reintroducing that name). - Added
ImGuiSliderFlags_ClampZeroRange
to enforce clamping even when v_min==v_max==0.0f in drag functions. Sliders are not affected.
- Tooltips, Drag and Drop: Fixed an issue where the fallback drag and drop payload tooltip appeared during drag and drop release.
- Tooltips, Drag and Drop: Stabilized name of drag and drop tooltip window so thattransitioning from an item tooltip to a drag tooltip doesn't leak window auto-sizing info from one to the other. (#8036)
- Tooltips: Tooltips triggered from touch inputs are positioned above the item. (#8036)
- Backends: SDL3: Update for API changes:
SDL_bool
removal.SDL_INIT_TIMER
removal. - Backends: WebGPU: Fixed DAWN api change using
WGPUStringView
inWGPUShaderSourceWGSL
. (#8009, #8010) [blitz-research]
Changes from 1.91.2 to 1.91.3 in the Docking branch:
- Backends: SDL2, SDL3: Fixed building for UWP platforms. (#8008)
- Backends: Win32: Use
ResisterClassW()
/CreateWindowExW()
for secondary viewports, to ensure correct IME input even if the backend was compiled in MBCS mode. (#7979, #5725)
2.1.6 Dear ImGui v1.91.2
- Yet another type inconsistency fix see #15
- Updated to Dear ImGui v1.91.2
Forwarded from https://github.com/ocornut/imgui/releases/tag/v1.91.2 (removed @ user to avoid spam)
1.91.2: detect id conflicts, table fixes, faster input text & more.
Changes (since v1.91.1)
- Added io.ConfigDebugHighlightIdConflicts debug feature! (ocornut/imgui#7961, ocornut/imgui#7669)
THIS DETECTS THE MOST COMMON USER ERROR BY FIRST-TIME DEAR IMGUI PROGRAMMERS! See Debug Tools page.- The tool detects when multiple items are sharing the same identifier, due to not using PushID/PopID in loops, or not using ID stack facilities such as "##" suffixes. Very frequently it happens when using empty "" labels.
- When hovering an item with a conflicting ID, all visible items with the same ID will be highlighted and an explanatory tooltip is made visible.
- The feature may be disabled and is exposed in Demo->Tools menu.
I've been wanting to add this tool for a long time, but was stalled by finding a way to
not make it spammy + make it practically zero cost. After made various proposals to
solve the same problem (thanks for pushing me!), I decided it was time to finish it. - Added ImGuiItemFlags_AllowDuplicateId to use with PushItemFlag()/PopItemFlag() if for some reason you intend to have duplicate identifiers. (ocornut/imgui#74, ocornut/imgui#96, ocornut/imgui#480, ocornut/imgui#501, ocornut/imgui#647, ocornut/imgui#654, ocornut/imgui#719, ocornut/imgui#843, ocornut/imgui#894, ocornut/imgui#1057, ocornut/imgui#1173, ocornut/imgui#1390, ocornut/imgui#1414, ocornut/imgui#1556, ocornut/imgui#1768, ocornut/imgui#2041, ocornut/imgui#2116, ocornut/imgui#2330, ocornut/imgui#2475, ocornut/imgui#2562, ocornut/imgui#2667, ocornut/imgui#2807, ocornut/imgui#2885, ocornut/imgui#3102, ocornut/imgui#3375, ocornut/imgui#3526, ocornut/imgui#3964, ocornut/imgui#4008, ocornut/imgui#4070, ocornut/imgui#4158, ocornut/imgui#4172, ocornut/imgui#4199, ocornut/imgui#4375, ocornut/imgui#4395, ocornut/imgui#4471, ocornut/imgui#4548, ocornut/imgui#4612, ocornut/imgui#4631, ocornut/imgui#4657, ocornut/imgui#4796, ocornut/imgui#5210, ocornut/imgui#5303, ocornut/imgui#5360, ocornut/imgui#5393, ocornut/imgui#5533, ocornut/imgui#5692, ocornut/imgui#5707, ocornut/imgui#5729, ocornut/imgui#5773, ocornut/imgui#5787, ocornut/imgui#5884, ocornut/imgui#6046, ocornut/imgui#6093, ocornut/imgui#6186, ocornut/imgui#6223, ocornut/imgui#6364, ocornut/imgui#6387, ocornut/imgui#6567, ocornut/imgui#6692, ocornut/imgui#6724, ocornut/imgui#6939, ocornut/imgui#6984, ocornut/imgui#7246, ocornut/imgui#7270, ocornut/imgui#7375, ocornut/imgui#7421, ocornut/imgui#7434, ocornut/imgui#7472, ocornut/imgui#7581, ocornut/imgui#7724, ocornut/imgui#7926, ocornut/imgui#7937 and probably more..)
- Nav: pressing any keyboard key while holding Alt disable toggling nav layer on Alt release. (ocornut/imgui#4439)
- MultiSelect+Tables: fixed an issue where box-select would skip items while drag-scrolling in a table with outer borders. (ocornut/imgui#7970, ocornut/imgui#7821).
- Inputs: SetNextItemShortcut() with ImGuiInputFlags_Tooltip doesn't show tooltip when item is active.
- InputText: internal refactoring to simplify and optimize the code. The ImWchar buffer has been removed. Simplifications allowed to implement new optimizations for handling very large text buffers (e.g. in our testing, handling of a 1 MB text buffer is now 3 times faster in VS2022 Debug build). This is the first step toward more refactoring. (ocornut/imgui#7925)
- InputText: added CJK double-width punctuation to list of separators considered for CTRL+Arrow.
- Tables: fixed auto-width columns when using synced-instances of same table. The previous fix done in v1.90.5 was incomplete. (ocornut/imgui#7218)
- Tables: fixed assertion related to inconsistent outer clipping when sizes are not rounded. (ocornut/imgui#7957)
- Tables: fixed assertion with tables with borders when clipped by parent. (ocornut/imgui#6765, ocornut/imgui#3752, ocornut/imgui#7428)
- Windows: fixed an issue where double-click to collapse could be triggered even while another item is active, if the item didn't use the left mouse button. (ocornut/imgui#7841)
- Misc: Made it accepted to call SetMouseCursor() with any out-of-bound value, as a way to allow hacking in custom cursors if desirable.
- Fonts: fixed ellipsis "..." rendering width miscalculation bug introduced in 1.91.0. (ocornut/imgui#7976)
- TextLinkOpenURL(): modified tooltip to display a verb "Open 'xxxx'". (ocornut/imgui#7885, ocornut/imgui#7660)
- Backends: SDL2: use SDL_Vulkan_GetDrawableSize() when available. (ocornut/imgui#7967, ocornut/imgui#3190)
- Backends: GLFW+Emscripten: use OSX behaviors automatically when using contrib glfw port. (ocornut/imgui#7965, ocornut/imgui#7915)
- Backends: WebGPU: Added support for optional IMGUI_IMPL_WEBGPU_BACKEND_DAWN / IMGUI_IMPL_WEBGPU_BACKEND_WGPU
defines to handle ever-changing native implementations. (ocornut/imgui#7977, ocornut/imgui#7969, ocornut/imgui#6602, ocornut/imgui#6188, ocornut/imgui#7523)
Changes from 1.91.1 to 1.91.2 in the Docking branch:
- Viewports: fixed an issue where a window manually constrained to the main viewport while crossing over main viewport bounds isn't translated properly. (ocornut/imgui#7985)
- Backends: SDL2, SDL3, Win32: ensure that ImGuiPlatformMonitor list is available after backend Init call. (ocornut/imgui#7995)
- Backends: Win32: fixed direct calls to platform_io.Platform_SetWindowPos()/Platform_SetWindowSize() on windows created by application (typically main viewport).
- Backends: Win32: fixed an issue where a viewport destroyed while clicking would hog mouse tracking and temporary lead to incorrect update of HoveredWindow. (ocornut/imgui#7971)
- Backends: SDL3: added support for viewport->ParentViewportId field to support parenting windows at OS level. (ocornut/imgui#7973, ocornut/imgui#7989)
2.1.4 Fixed naming inconsistency
- Fixed issue #15
- Changed some names from ImGui.ImGuiXXX to ImGui.XXX and ImPlot.ImPlotXXX to ImPlot.XXX.
Full Changelog: 2.1.3...2.1.4
2.1.3 Hotfix for AOT compatibility. (No api changes)
- Fixed issue #14 regarding .NET AOT compatibility.
Full Changelog: 2.1.2...2.1.3
2.1.2 Update to Dear ImGui 1.91.1
- Updated to Dear ImGui 1.91.1
- Fixed wrongly build shared libs.
(Forwarded from https://github.com/ocornut/imgui/releases/tag/v1.91.1)
Changes (since v1.91.0)
We are moving a few platform related handlers from the ImGuiIO to the ImGuiPlatformIO structure.
- If you are using standard backends you'll have nothing to do.
- If you are using a custom and or third-party backend: we kept a legacy redirection but consider updating (you can check by enabling IMGUI_DISABLE_OBSOLETE_FUNCTIONS. Most likely the only functions you used that have moved are GetClipboardTextFn/SetClipboardTextFn().
- The ImGuiPlatformIO structure already existed in the docking branch to support multi-viewports, we are slowly introducing selected parts of it in the master branch in order to (in the future) add features related to e.g. querying monitor/desktop DPI scale.
Breaking Changes:
- BeginChild(): renamed ImGuiChildFlags.Border to ImGuiChildFlags.Borders for consistency. Kept inline redirection flag (will obsolete).
- IO: moved clipboard functions from ImGuiIO to ImGuiPlatformIO:
- io.GetClipboardTextFn -> platform_io.PlatformGetClipboardTextFn
- io.SetClipboardTextFn -> platform_io.PlatformSetClipboardTextFn
- in function signatures, changed void* user_data to ImGuiContext* ctx for consistency with other functions. Pull your user data from platform_io.ClipboardUserData if used.
- as this is will affect all users of custom engines/backends, we are providing proper legacy redirection (will obsolete).
- IO: moved other functions from ImGuiIO to ImGuiPlatformIO:
- io.PlatformOpenInShellFn -> platform_io.Platform_OpenInShellFn (ocornut/imgui#7660)
- io.PlatformSetImeDataFn -> platform_io.Platform_SetImeDataFn
- io.PlatformLocaleDecimalPoint -> platform_io.Platform_LocaleDecimalPoint (ocornut/imgui#7389, ocornut/imgui#6719, ocornut/imgui#2278)
- access those via GetPlatformIO() instead of GetIO(). (Because PlatformOpenInShellFn and PlatformSetImeDataFn were introduced extremely recently and often automatically set by core library and backends, we are exceptionally not maintaining a legacy redirection symbol for those two.)
- Commented the old ImageButton() signature obsoleted in 1.89 (~August 2022). (ocornut/imgui#5533, ocornut/imgui#4471, ocornut/imgui#2464, ocornut/imgui#1390)
- old ImageButton() used ImTextureId as item id (created issue with e.g. multiple buttons in same scope, transient texture id values, opaque computation of ID)
- new ImageButton() requires an explicit const char* str_id
- old ImageButton() had a frame_padding override argument.
- new ImageButton() always use style.FramePadding, which you can modify using PushStyleVar()/PopStyleVar().
Other Changes
- IO: Added GetPlatformIO() and ImGuiPlatformIO, pulled from 'docking' branch, which is a centralized spot to connect os/platform/renderer related functions. Clipboard, IME and OpenInShell hooks are moved here. (ocornut/imgui#7660)
- IO, InputText: fixed an issue where typing text in an InputText() would defer character processing by one frame, because of the trickling input queue. Reworked interleaved keys<>char trickling to take account for keys known to input characters. (ocornut/imgui#7889, ocornut/imgui#4921, ocornut/imgui#4858)
- Windows: adjust default ClipRect to better match rendering of thick borders (which are in theory not supported). Compensate for the fact that borders are centered around the windows edge rather than inner. (ocornut/imgui#7887, ocornut/imgui#7888 + ocornut/imgui#3312, ocornut/imgui#7540, ocornut/imgui#3756, ocornut/imgui#6170, ocornut/imgui#6365)
- Made BeginItemTooltip() and IsItemHovered() with delay flag infer an implicit ID (for ID-less items such as Text element) in a way that works when item resizes. (ocornut/imgui#7945, ocornut/imgui#1485)
- MultiSelect+TreeNode+Drag and Drop: fixed an issue where carrying a drag and drop payload over an already open tree node using multi-select would incorrectly select it. (ocornut/imgui#7850)
- MultiSelect+TreeNode: default open behavior is _OpenOnDoubleClick + _OpenOnArrow
when used in a multi-select context without any ImGuiTreeNode_OpenOnXXX flags set. (ocornut/imgui#7850) - Tables: fixes/revert a 1.90 change were outer border would be moved bottom and right by an extra pixel + rework the change so that contents doesn't overlap the bottom and right border in a scrolling table. (ocornut/imgui#6765, ocornut/imgui#3752, ocornut/imgui#7428)
- Tables: fixed an issue resizing columns or querying hovered column/row when using multiple synched instances that are layed out at different X positions. (ocornut/imgui#7933)
- Tabs: avoid queuing a refocus when tab is already focused, which would have the side-effect of e.g. closing popup on a mouse release. (ocornut/imgui#7914)
- InputText: allow callback to update buffer while in read-only mode. (ocornut/imgui_club#46)
- InputText: fixed an issue programmatically refocusing a multi-line input which was just active. (ocornut/imgui#4761, ocornut/imgui#7870)
- TextLink(), TextLinkOpenURL(): change mouse cursor to Hand shape when hovered. (ocornut/imgui#7885, ocornut/imgui#7660)
- Tooltips, Drag and Drop: made it possible to override BeginTooltip() position while inside a drag and drop source or target: a SetNextWindowPos() call won't be overridden. (ocornut/imgui#6973)
- PlotHistogram, PlotLines: register item ID and use button behavior in a more idiomatic manner, fixes preventing e.g. GetItemID() and other ID-based helper to work. (ocornut/imgui#7935, ocornut/imgui#3072)
- Style: added PushStyleVarX(), PushStyleVarY() helpers to conveniently modify only one component of a ImVec2 var.
- Fonts: made it possible to use PushFont()/PopFont() calls across Begin() calls. (ocornut/imgui#3224, ocornut/imgui#3875, ocornut/imgui#6398, ocornut/imgui#7903)