Skip to content

2.2.7 Dear ImGui 1.91.9b

Latest
Compare
Choose a tag to compare
@JunaMeinhold JunaMeinhold released this 04 Apr 12:02
· 5 commits to master since this release

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

@qian-o
@TheSameCat2


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 or ImGuiTableColumnFlags_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 and border_col parameter from Image() 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 with ImageButton().
    • 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) when border_col is specified.
    • Added ImageWithBg() function which has both bg_col (which was missing and most useful) and tint_col. It was impossible to add bg_col to Image() with a parameter order consistent with other functions, so we decided to remove tint_col and introduce ImageWithBg().
  • Renamed ImFontConfig::GlyphExtraSpacing.x option to GlyphExtraAdvanceX. (#242)
  • Renamed style.TabMinWidthForCloseButton to style.TabCloseButtonMinWidthUnselected.
  • Backends: Vulkan: Added uint32_t api_version argument to ImGui_ImplVulkan_LoadFunctions(). Note that it was also added to ImGui_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 for Checkbox(), RadioButton(), Selectable(). Regression from 2025/01/13. (#8370)
  • Windows: Fixed an issue where BeginChild() inside a collapsed Begin() wouldn't inherit the SkipItems flag, resulting in missing coarse clipping opportunities for code not checking the BeginChild() 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 with SetNextWindowContentSize(), 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)
  • 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 nested BeginDisabled() calls with PushStyleVar(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 and ImGuiMouseCursor_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 introduced ImGuiKey_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 and GLFW_KEY_WORLD_2 are emitting ImGuiKey_Oem102.
  • Backends: GLFW: Fixed clipboard handler assertion when using GLFW <= 3.2.1 compiled with asserts enabled. (#8452)
  • Backends: SDL2, SDL3: Using SDL_OpenURL() in platform_io.Platform_OpenInShellFn handler. (#7660) [achabense]
  • Backends: SDL2, SDL3, Win32, Allegro5: Added support for ImGuiMouseCursor_Wait and ImGuiMouseCursor_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 in ImGui_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's SPI_SETWORKAREA message also triggers a refresh of monitor list, as they contain work area information. (#8415) [PathogenDavid, lailoken]