Hexa.NET.ImGui Changes
- Updated to Dear ImGui 1.91.9b
- Fixed a generator bug where non internal functions landed in the internal category.
New Sponsors
π Huge thanks to our newest supporter:
@SadE54
π Thanks to all recurring supporters
Forwarded from https://github.com/ocornut/imgui/releases/tag/v1.91.9b (removed @ to avoid spam)
v1.91.9b: hotfix
1.91.9 has an assert/crashing bug related to loading table settings in certain instances.
Changes (since v1.91.9)
- Tables: Fixed assert when loading .ini settings with reordered columns. (#8496, #7934)
- Tables: Fixed issues when loading .ini settings for a table with columns using
ImGuiTableColumnFlags_DefaultHide
orImGuiTableColumnFlags_DefaultSort
. (#8496, #7934)
Forwarded from https://github.com/ocornut/imgui/releases/tag/v1.91.9 (removed @ to avoid spam)
v1.91.9
Changes (since v1.91.8)
Breaking Changes:
- Image: removed
tint_col
andborder_col
parameter fromImage()
function. (#8131, #8238)- Old function signature:
void Image (ImTextureID tex_id, ImVec2 image_size, ImVec2 uv0 = (0,0), ImVec2 uv1 = (1,1), ImVec4 tint_col = (1,1,1,1), ImVec4 border_col = (0,0,0,0));
- New function signatures:
void Image (ImTextureID tex_id, ImVec2 image_size, ImVec2 uv0 = (0,0), ImVec2 uv1 = (1,1));
void ImageWithBg(ImTextureID tex_id, ImVec2 image_size, ImVec2 uv0 = (0,0), ImVec2 uv1 = (1,1), ImVec4 bg_col = (0,0,0,0), ImVec4 tint_col = (1,1,1,1));
- TL;DR:
border_col
had misleading side-effect on layout,bg_col
was missing, parameter order couldn't be consistent withImageButton()
. - New behavior always use
ImGuiCol_Border
color +style.ImageBorderSize
/ImGuiStyleVar_ImageBorderSize
. - Old behavior altered border size (and therefore layout) based on border color's alpha, which caused variety of problems.
- Old behavior used a fixed value of 1.0f for border size which was not tweakable.
- Kept legacy signature (will obsolete), which mimics the old behavior, but uses
Max(1.0f, style.ImageBorderSize)
whenborder_col
is specified. - Added
ImageWithBg()
function which has bothbg_col
(which was missing and most useful) andtint_col
. It was impossible to addbg_col
to Image() with a parameter order consistent with other functions, so we decided to removetint_col
and introduceImageWithBg()
.
- Old function signature:
- Renamed
ImFontConfig::GlyphExtraSpacing.x
option toGlyphExtraAdvanceX
. (#242) - Renamed
style.TabMinWidthForCloseButton
tostyle.TabCloseButtonMinWidthUnselected
. - Backends: Vulkan: Added
uint32_t api_version
argument toImGui_ImplVulkan_LoadFunctions()
. Note that it was also added toImGui_ImplVulkan_InitInfo()
but for the later it is optional. (#8326, #8365, #8400) - Internals: Fonts: ImFontAtlas::ConfigData[] has been renamed to ImFontAtlas::Sources[],
- Internals: Fonts: ImFont::ConfigData[], ConfigDataCount has been renamed to Sources[], SourcesCount.
- Internals: Menus: reworked mangling of menu windows to use
\"###Menu_00\"
etc. instead of\"##Menu_00\"
, allowing them to also store the menu name before it. This shouldn't affect code unless directly accessing menu window from their mangled name.
Other changes:
- Fixed
IsItemDeactivatedAfterEdit()
signal being broken forCheckbox()
,RadioButton()
,Selectable()
. Regression from 2025/01/13. (#8370) - Windows: Fixed an issue where
BeginChild()
inside a collapsedBegin()
wouldn't inherit theSkipItems
flag, resulting in missing coarse clipping opportunities for code not checking theBeginChild()
return value. - Windows, Style: Added
style.WindowBorderHoverPadding
setting to configure inner/outer padding applied to hit-testing of windows borders and detection of hovered window. - InputText: Allow CTRL+Shift+Z to redo even outside of OSX. (#8389) [tanksdude]
- InputText: Pasting a multi-line buffer into a single-line edit replaces carriage return by spaces. (#8459)
- InputTextWithHint(): Fixed buffer-overflow (luckily often with no visible effect) when a user callback modified the buffer contents in a way that altered the visibility of the preview/hint buffer. (#8368) [m9710797, ocornut]
- Scrollbar: Rework logic that fades-out scrollbar when it becomes too small, which amusingly made it disappear when using very big font/frame size.
- Scrollbar: Automatically stabilize ScrollbarX visibility when detecting a feedback loop manifesting with ScrollbarX visibility toggling on and off repeatedly. (#8488, #3285, #4539) (feedback loops of this sort can manifest in various situations, but combining horizontal + vertical scrollbar + using a clipper with varying width items is one frequent cause. The better solution is to, either: (1) enforce visibility by using
ImGuiWindowFlags_AlwaysHorizontalScrollbar
or (2) declare stable contents width withSetNextWindowContentSize()
, if you can compute it.) - Tables: fixed calling
SetNextWindowScroll()
on clipped scrolling table to not leak the value into a subsequent window. (#8196) - Tables: fixed an issue where Columns Visible/Width state wouldn't be correctly restored when hot-reloading .ini state. (#7934)
- Tables: tamed some .ini settings optimizations to more accurately allow overwriting/hot-reloading settings in more situations. (#7934)
- Tables, Error Handling: Recovery from invalid index in
TableSetColumnIndex()
. (#1651) - Image: Added
ImageWithBg()
variant with bg color and tint color. (#8131, #8238) - Image, Style: Added
style.ImageBorderSize
,ImGuiStyleVar_ImageBorderSize
. (#8131, #8238) - Selectable: Fixed horizontal label alignment with
SelectableTextAlign.x > 0.0f
and specifying a selectable size. (#8338) - Tabs, Style: made the Close Button of selected tabs always visible by default, without requiring to hover the tab. (#8387)
- Added
style.TabCloseButtonMinWidthSelected
/TabCloseButtonMinWidthUnselected
settings to configure visibility of the Close Button for selected and unselected tabs. (-1: always visible. 0.0f: visible when hovered. >0.0f: visible when hovered if minimum width) - Default for selected tabs:
TabCloseButtonMinWidthSelected == -1.0f
(always visible) - Default for unselected tabs:
TabCloseButtonMinWidthUnselected == 0.0f
(visible when hovered)
- Added
- Tabs: fixed middle-mouse-button to close tab not checking that close button is hovered, merely its visibility. (#8399, #8387) [nicovanbentum]
- TextLink(), TextLinkOpenURL(): fixed honoring text baseline alignment. (#8451, #7660) [achabense]
- TextLinkOpenURL(): fixed default Win32
io.PlatformOpenInShellFn
handler to handle UTF-8 regardless of system regional settings. (#7660) [achabense] - Disabled: Fixed an issue restoring Alpha in
EndDisabled()
when using nestedBeginDisabled()
calls withPushStyleVar(ImGuiStyleVar_DisabledAlpha)
within. (#8454, #7640) - Clipper: Fixed an issue where passing an out of bound index to
clipper.IncludeItemByIndex()
could incorrectly offset the final cursor, even if that index was not iterated through. One case where it would manifest was calling Combo() with an out of range index. (#8450) - Debug Tools: Added
io.ConfigDebugHighlightIdConflictsShowItemPicker
(defaults to true) to allow disabled Item Picker suggestion in user facing builds. (#7961, #7669) - Debug Tools: Tweaked layout of ID Stack Tool and always display full path. (#4631)
- Misc: Various zealous warning fixes for newer version of Clang.
- Misc: Added
ImGuiMouseCursor_Wait
andImGuiMouseCursor_Progress
mouse cursors (busy/wait/hourglass shape, with or without an arrow cursor). - Demo: Reorganized "Widgets" section to be alphabetically ordered and split in more functions.
- Demo: Combos: demonstrate a very simple way to add a filter to a combo, by showing the filter inside the combo contents. (#718)
- Examples: SDL3: Added comments to clarify setup for users of the unfortunate
SDL_MAIN_USE_CALLBACKS
feature. (#8455) - IO: Added
ImGuiKey_Oem102
to ImGuiKey enum. (#7136, #7201, #7206, #7306, #8468) - Backends: reworked key handlers to use/prioritize untranslated scancodes instead of translated keycodes when dealing with OEM keys which are too difficult to find a reliable translated mapping on all systems, backends and keyboard layout. (#7136, #7201, #7206, #7306, #7670, #7672, #8468)
- The affected keys are:
ImGuiKey_Apostrophe
,ImGuiKey_Comma
,ImGuiKey_Minus
,ImGuiKey_Period
,ImGuiKey_Slash
,ImGuiKey_Semicolon
,ImGuiKey_Equal
,ImGuiKey_LeftBracket
,ImGuiKey_RightBracket
,ImGuiKey_Backslash
,ImGuiKey_GraveAccent
, and newly introducedImGuiKey_Oem102
. - This is NOT affecting characters used the text inputs.
- Fixes many cases of keys not emitting a ImGuiKey value with certain keyboard layouts.
- Makes emitted ImGuiKey values more consistent regardless of keyboard mapping, but you may be getting different values as before.
- Win32, SDL2, SDL3: Use scancodes for OEM keys.
- GLFW:
GLFW_KEY_WORLD_1
andGLFW_KEY_WORLD_2
are emittingImGuiKey_Oem102
.
- The affected keys are:
- Backends: GLFW: Fixed clipboard handler assertion when using GLFW <= 3.2.1 compiled with asserts enabled. (#8452)
- Backends: SDL2, SDL3: Using
SDL_OpenURL()
inplatform_io.Platform_OpenInShellFn
handler. (#7660) [achabense] - Backends: SDL2, SDL3, Win32, Allegro5: Added support for
ImGuiMouseCursor_Wait
andImGuiMouseCursor_Progress
cursors. - Backends: SDL2, SDL3: Avoid calling
SDL_GetGlobalMouseState()
when mouse is in relative mode. (#8425, #8407) [TheMode] - Backends: SDL2, SDL3: Only start
SDL_CaptureMouse()
when mouse is being dragged, to mitigate issues with e.g. Linux debuggers not claiming capture back on debug break. (#6410, #3650) - Backends: OpenGL3: Lazily reinitialize embedded GL loader for when calling backend from e.g. other DLL boundaries. (#8406)
- Backends: DirectX12: Fixed an issue where pre-1.91.5 legacy
ImGui_ImplDX12_Init()
signature started breaking in 1.91.8 due to missing command queue. (#8429) - Backends: Metal: Fixed a crash on application resources. (#8367, #7419) [anszom]
- Backends: Vulkan: Added
ApiVersion
field inImGui_ImplVulkan_InitInfo
. Default to header version if unspecified. (#8326, #8365) [mklefrancois] - Backends: Vulkan: Dynamic rendering path loads
\"vkCmdBeginRendering\"
/\"vkCmdEndRendering\"
(without -KHR suffix) on API 1.3. (#8326, #8365) [mklefrancois] - Backends: WebGPU: Recreate image bind groups during render to allow reuse of
WGPUTextureView
pointers. (#8426, #8046, #7765, #8027) [pplux, Jairard] - Backends: WebGPU: Fix for DAWN API change
WGPUProgrammableStageDescriptor
->WGPUComputeState
. [PhantomCloak] (#8369) - Backends: WebGPU: Fix for webgpu-native API changes. (#8426) [pplux]
Changes from 1.91.8 to 1.91.9 specific to the Docking+Multi-Viewports branch:
- Docking: Removed legacy assert preventing to call
DockBuilderSplitNode()
on an existing split node. This makes using (technically internal) DockBuilder a little more flexible and bearable! (#8472) [MegaMech] - Viewports: fixed an issue where in certain cases, a window repositioning leading to a monitor change could have the window incorrectly get clamped within the boundaries of its previous monitor. Would happen e.g. when loading .ini data during runtime. (#8484)
- Viewports: fixed an assert when a window load settings with a position outside monitor bounds, when there are multiple monitors. (#8393, #8385) [gaborodriguez]
- Viewports + Backends: Win32: Fixed setting title bar text when applicationis compiled without UNICODE. (#7979, #5725) [lailoken]
- Backends: GLFW, SDL2/SDL3: Update monitors and work areas information every frame, as the later may change regardless of monitor/display changes. (#8415)
- Backends: Win32:
WM_SETTINGCHANGE
'sSPI_SETWORKAREA
message also triggers a refresh of monitor list, as they contain work area information. (#8415) [PathogenDavid, lailoken]