Skip to content

Releases: HexaEngine/Hexa.NET.ImGui

2.2.9 Dear ImGui 1.92.2b

10 Oct 06:36

Choose a tag to compare

Hexa.NET.ImGui Changes

  • Updated to Dear ImGui 1.92.2b
  • Add MonoGame Example by @AristurtleDev in #80
  • Update native libraries for ImGui to the latest version (v1.92.2b) by @github-actions[bot] in #85
  • Update native libraries for ImGuiImpl to the latest version (v1.92.2b) by @github-actions[bot] in #86
    Full Changelog: 2.2.8.5...2.2.9

New Contributors

πŸŽ‰ Thanks to all Supporters


Forwarded from v1.92.2 v1.92.2b (removed @ to avoid spam)

v1.92.2b: Hotfix for 1.92.2

Changes (since v1.92.2)

This is a hot fix for v1.92.2 which has issues with using IsItemHovered() on disabled items or items with no identifier while clicking on them.

  • Fixed IsItemHovered() failing on disabled items and items that have no identifier (e.g. Text() calls) when holding mouse button. (Regression in 1.92.2). (#8877, #8883)
  • Made IsItemHovered() on holding mouse button down on disabled items not leak between items when the window cannot be moved.
  • Backends: Allegro5: Fixed texture format setup which didn't work on all setups/drivers. (#8770, #8465)
  • Backends: Allegro5: Added ImGui_ImplAllegro5_SetDisplay() function to change current ALLEGRO_DISPLAY, as Allegro applications often need to do that.
  • Backends: Allegro5: Fixed missing support for ImGuiKey_PrintScreen under Windows, as raw Allegro 5 does not receive it.

Changes (since v1.92.1)

This is a general maintenance release addressing some issues discovered in 1.92.0.
Read v1.92.0 Changelog for details and links on larger changes.

πŸ†˜ Need help updating your custom rendering backend to support ImGuiBackendFlags_RendererHasTextures ?
You can read the newly improved docs/BACKENDS.md.

TL;DR;

  • New tab bar resizing logic (combining shrinking and scrolling) and configuration options.
  • Fixed Vulkan backend on some setup (following 1.92.0) changes.
  • SDL_GPU backend changes ImTextureID to be SDL_GPUTexture* (!).
  • Keyboard/navigation fixes, table fixes, font fixes, new SDL3+Metal example & many more.

Breaking Changes

  • Tabs: Renamed ImGuiTabBarFlags_FittingPolicyResizeDown to ImGuiTabBarFlags_FittingPolicyShrink. Kept inline redirection enum (will obsolete). (#261, #351)
  • Backends: SDL_GPU3: changed ImTextureID type from SDL_GPUTextureSamplerBinding* to SDL_GPUTexture*, which is more natural and easier for user to manage. If you need to change the current sampler, you can access the ImGui_ImplSDLGPU3_RenderState struct. (#8866, #8163, #7998, #7988)

Other Changes

  • Fixed an old inconsistency between IsItemHovered() and internal hovering check, where IsItemHovered() would return true to mouse was first clicked on the background of a non-moveable window then moved over the item or button. Note that while it is consistent with other logic, there is a possibility that some third-party code may accidentally relied on this. One can always use ImGuiHoveredFlags_AllowWhenBlockedByActiveItem to bypass the active id check. (#8877) [achabense, ocornut]
  • Fonts: fixed an issue when a font using MergeMode has a reference size specified but the target font doesn't. Usually either all fonts should have a reference size (only required when specifying e.g. GlyphOffset), or none should have a reference size.
  • Fonts: fixed a crash when changing texture format when using a legacy backend. Most commonly would happen when calling GetTexDataAsRGBA32() then immediately calling GetTexDataAsAlpha8(). (#8824)
  • Windows: fixed an issue where resizable child windows would emit border logic when hidden/non-visible (e.g. when in a docked window that is not selected), impacting code not checking for BeginChild() return value. (#8815)
  • Textures: Fixed support for #define ImTextureID_Invalid to non-zero value: ImFontAtlas() was incorrectly cleared with zeroes. (#8860, #8745) [cfillion]
  • Tables: fixed TableGetRowIndex() which never correctly worked when using a clipper (it exists for consistency but is almost never used, as it is often more convenient to use index in caller-code, whereas TableGetRowIndex() includes header rows).
  • Tables: fixed imgui_internal.h's TableGetHoveredRow() the same way. (#7350, #6588, #6250)
  • Tabs: added new fitting policy ImGuiTabBarFlags_FittingPolicyMixed and made it the default. This policy shrink tab width down to a given amount, and then beyond that it enable scrolling buttons. (#3421, #8800)
  • Tabs: added style.TabMinWidthShrink, ImGuiStyleVar_TabMinWidthShrink to control the width to shrink to in ImGuiTabBarFlags_FittingPolicyMixed mode. (#3421, #8800).
  • Tabs: when scrolling is enabled, track selected tabs when resizing down parent container. This does not prevent to horizontally scroll it out of view during normal operations. (#3421, #8800)
  • Tabs: added style.TabMinWidthBase, ImGuiStyleVar_TabMinWidthBase to control the base minimum width of a tab (default to 1.0f). This is the size before any potential shrinking is applied.
  • Tabs: fixed tab bar underline not drawing below scroll buttons, when they are enabled (minor regression from 1.90). (#6820, #4859, #5022, #5239)
  • Tabs: made scrolling buttons never keyboard/gamepad navigation candidates.
  • Nav, Tables: fixed navigation within scrolling tables when item boundaries goes beyond columns limits. The fix done in 1.89.6 didn't work correctly on scrolling windows. (#8816, #2221)
  • Nav: fixed a bug where ImGuiKey_NavGamepadMenu (== ImGuiKey_GamepadFaceLeft) button couldn't toggle between main and menu layers while navigating a Modal window. (#8834)
  • Error Handling: minor improvements to error handling for TableGetSortSpecs() and TableSetBgColor() calls. (#1651, #8499)
  • Misc: fixed building with IMGUI_DISABLE_DEBUG_TOOLS only. (#8796)
  • Misc: fixed building with IMGUI_DISABLE_STB_TRUETYPE_IMPLEMENTATION since 1.92.0. (#8794)
  • Misc: removed more redundant inline static linkage from imgui_internal.h to facilitate using in C++ modules. (#8813, #8682, #8358) [stripe2933]
  • Misc: ImVector: skip memcpy() in operator= if Data isn't initialized in order to play nice with -fsanitize=undefined. (#8874) [i25e]
  • CI: Added SDL3 builds to MacOS and Windows. (#8819, #8778) [scribam]
  • CI: Updated Windows CI to use a more recent SDL2. (#8819, #8778) [scribam]
  • Examples: SDL3+Metal: added SDL3+Metal example. (#8827, #8825) [shi-yan]
  • Examples: SDL3+SDL_GPU: use SDL_WaitAndAcquireGPUSwapchainTexture() instead of SDL_AcquireGPUSwapchainTexture(). (#8830) [itsdanott]
  • Examples: SDL3+SDL_GPU: use SDL_GPU_PRESENTMODE_VSYNC present mode.
  • Backends: OpenGL3: add and call embedded loader shutdown in ImGui_ImplOpenGL3_Shutdown() to facilitate multiple init/shutdown cycles in same process. (#8792) [tim-rex]
  • Backends: OpenGL2, OpenGL3: set GL_UNPACK_ALIGNMENT to 1 before updating textures. (#8802) [Daandelange]
  • Backends: SDL_GPU3: expose current SDL_GPUSampler* in the ImGui_ImplSDLGPU3_RenderState struct. (#8866, #8163, #7998, #7988)
  • Backends: Vulkan: Fixed texture update corruption introduced in 1.92.0, affecting some drivers/setups. (#8801, #8755, #8840) [Retro52, Miolith]
  • Backends: Vulkan: Avoid calling vkCmdBindDescriptorSets() when texture has not changed. (#8666) [micb25]

Changes from 1.92.1 to 1.92.2 specific to the Docking+Multi-Viewports branch:

  • Windows, Viewport: fixed an issue where interrupting a viewport move with e.g. a ClearActiveID() call would leave the dragged viewport with the normally temporary ImGuiViewportFlags_NoInputs flag, preventing further interactions with the viewport. (#5324) (thanks mdelaharpe)
  • Viewports: added io.ConfigViewportPlatformFocusSetsImGuiFocus to opt-out of focusing imgui windows When a platform window is focused (e.g. using Alt+Tab, clicking Platform Title Bar). In principle this is better enabled but we provide an opt-out because some Linux window managers tend to eagerly focus windows (on e.g. mouse hover, or even on a simple window pos/size change). (#6299, #6462)

2.2.9-prerelease Dear ImGui 1.92.2b + ImPlot3D support

05 Sep 22:44
7dec8a8

Choose a tag to compare

Note the full change logs will be added upon full release.

What's Changed

  • Add MonoGame Example by @AristurtleDev in #80
  • Update native libraries for ImGui to the latest version (v1.92.2b) by @github-actions[bot] in #85
  • Update native libraries for ImGuiImpl to the latest version (v1.92.2b) by @github-actions[bot] in #86

New Contributors

Full Changelog: 2.2.8.5...2.2.9-prerelease

2.2.8.5 Dear ImGui 1.92.1

04 Aug 20:02

Choose a tag to compare

Hexa.NET.ImGui Changes

Fixed issue "ImGuiContext KeysMayBeCharInput wrong field size" (#83)
Fixed issue "Invalid C# binding generated for ImVector<>* type with ImGui v1.92" (#58)
Added imgui_impl_sdlgpu3.cpp (SDL3 GPU Backend) (#57)
Fixed issue "ImGuiInputTextFlags.EnterReturnsTrue breaks ref-based calls" (#53)
Added "[Feature Request] Implicit converting between IntPtr and ImTextureID" (#44)

πŸŽ‰ Thanks to all recurring and new supporters

@GlebLava
@maidopi-usagi
F. K.
@Demorome
Mr Villa


Forwarded from https://github.com/ocornut/imgui/releases/tag/v1.92.1 (removed @ to avoid spam)

Changes (since v1.92.0)

This is a general maintenance release addressing some issues discovered in 1.92.0.
Read v1.92.0 Changelog for details and links on main changes.

πŸ†˜ Need help updating your custom rendering backend to support ImGuiBackendFlags_RendererHasTextures ?
You can read the newly improved docs/BACKENDS.md.

Changes

  • Fonts: added ImFontAtlas::SetFontLoader() to dynamically change font loader at runtime without using internal API. (#8752, #8465)
  • Fonts: fixed a bug where dynamically changing font loader would lose the Fallback and Ellipsis glyphs under some circumstance. (#8763)
  • Fonts: for large size fonts, layout/size calculation only load glyphs metrics. Actual glyphs are renderer+packed when used by drawing functions. (#8758, #8465)
  • Fonts: set a maximum font size of 512.0f at ImGui:: API level to reduce edge cases (e.g. out of memory errors). ImDrawList:: API doesn't have the constraint. (#8758)
  • Fonts: restore ImFontConfig::FontNo being a 32-bits value as this is needed to pass full range of information into e.g. FreeType's face_index, as higher bits are used from FreeType 2.6.1. (#8775) [Valakor] (the field has been erroneously reduced from 32-bits to 8-bit in 1.92.0)
  • Textures: Fixed support for #define ImTextureID_Invalid to non-zero value: ImTextureData was incorrectly cleared with zeroes. (#8745) [rachit7645]
  • Demo: Added \"Text -> Font Size\" demo section. (#8738) [Demonese]
  • CI: Fixed dllimport/dllexport tests. (#8757) [AidanSun05]
  • CI: Updated to use latest Windows image + VS2022.
  • Debug Tools: added IMGUI_DEBUG_HIGHLIGHT_ALL_ID_CONFLICTS to detect id conflicts before hovering. This is very slow and should only be used temporarily. (#8651, #7961, #7669)
  • Examples: GLFW+OpenGL3, GLFW+WGPU: Emscripten Makefiles uses GLFW port contrib.glfw3 which offers better HiDPI support. (#8742) [pthom]
  • Backends: GLFW, SDL2 made ImGui_ImplGLFW_GetContentScaleXXX() and ImGui_ImplSDL2_GetContentScaleXXXX() helpers return 1.0f on Emscripten and Android platforms, matching macOS logic. (#8742, #8733) [pthom]
  • Backends: SDL3: avoid calling SDL_StartTextInput() again if already active. (fixes e.g.: an issue on iOS where the keyboard animation will popup every time the user types a key + probably other things) (#8727) [morrazzzz]
  • Backends: OSX: added ImGuiMouseCursor_Wait and ImGuiMouseCursor_Progress mouse cursor support. (#8739) [cfillion]
  • Backends: Allegro5: fixed texture update broken on some platforms where ALLEGRO_LOCK_WRITEONLY needed all texels to be rewritten. (#8770)
  • Backends: Vulkan: use nonCoherentAtomSize to align upload_size, fixing validation error on some setups. (#8743, #8744) [tquante]
  • Backends: Vulkan: fixed texture synchronization issue introduced in 1.92.0, leading to validation layers being grumpy. (#8772) [Majora320]

Changes from 1.92.0 to 1.92.1 specific to the Docking+Multi-Viewports branch:

  • Backends: OSX: Fixed multi-viewport handling broken in 1.92.0. (#8644, #8777) [cfillion]

Forwarded from https://github.com/ocornut/imgui/releases/tag/v1.92.0 (removed @ to avoid spam)

v1.92.0: Scaling fonts & many more (big release)

Changes (since v1.91.9b)

πŸ“£ THIS VERSION CONTAINS THE LARGEST AMOUNT OF BREAKING CHANGES SINCE 2015! I TRIED REALLY HARD TO KEEP THEM TO A MINIMUM, REDUCE THE AMOUNT OF INTERFERENCE, BUT INEVITABLY SOME USERS OR THIRD-PARTY EXTENSIONS WILL BE AFFECTED.

πŸ“£ IN ORDER TO HELP US IMPROVE THE TRANSITION PROCESS, INCL. DOCUMENTATION AND COMMENTS, PLEASE REPORT ANY DOUBT, CONFUSION, QUESTIONS, YOU CAN SKIM ocornut/imgui#8465 AND THEN PLEASE OPEN A NEW ISSUE.

πŸ“£ If you are using custom widgets, internals or third-party extension that are somehow breaking and aren't obvious how to solve, please post in Issues so we can gather data and share solutions that may help others.

πŸ“£ As part of the plan to reduce impact of API breaking changes, several unfinished changes/features/refactors related to font and text systems and scaling will be part of subsequent releases (1.92.1+).

πŸ“£ If you are updating from an old version, and expecting a massive or difficult update, consider first updating to 1.91.9 to reduce the amount of changes.

Breaking Changes:

  • Fonts: IMPORTANT: if your app was solving the OSX/iOS Retina screen specific logical vs display scale problem by setting io.DisplayFramebufferScale (e.g. to 2.0f) + setting io.FontGlobalScale (e.g. to 1.0f/2.0f) + loading fonts at scaled sizes (e.g. size X * 2.0f):
    • This WILL NOT map correctly to the new system! Because font will rasterize as requested size.
    • With a legacy backend (< 1.92):
      • Instead of setting io.FontGlobalScale = 1.0f/N, set ImFontCfg::RasterizerDensity = N.
      • This already worked before, but is now pretty much required.
    • With a new backend (1.92+),
      • This should be all automatic.
      • FramebufferScale is automatically used to set current font RasterizerDensity.
      • FramebufferScale is a per-viewport property provided by backend through the Platform_GetWindowFramebufferScale() handler in 'docking' branch.
  • Fonts: IMPORTANT on Font Sizing:
    • Before 1.92, fonts were of a single size. They can now be dynamically sized.
    • PushFont() API now has a REQUIRED size parameter.
      void PushFont(ImFont* font) --> void PushFont(ImFont* font, float size)
      • PushFont(font, 0.0f) // Change font and keep current size
      • PushFont(NULL, 20.0f) // Keep font and change current size
      • PushFont(font, 20.0f) // Change font and set size to 20.0f
      • PushFont(font, style.FontSizeBase * 2.0f) // Change font and set size to be twice bigger than current size.
      • PushFont(font, font->LegacySize) // Change font and set size to size passed to AddFontXXX() function. Same as pre-1.92 behavior, for fixed size fonts.
    • To use old behavior use ImGui::PushFont(font, font->LegacySize) at call site. We intentionally didn't add a default parameter because it would make the long-term transition more difficult.
    • Kept inline redirection font. Will obsolete.
    • Global scale factors may be applied over the provided size. This is why it is called FontSizeBase in the style structure.
    • Global scale factors are: style.FontScaleMain, style.FontScaleDpi and maybe more.
    • ImFont::FontSize was removed and does not make sense anymore.
    • ImFont::LegacySize is the size passed to AddFont().
    • Removed support for old PushFont(NULL) which was a shortcut for "revert to default font".
    • Renamed/moved io.FontGlobalScale to style.FontScaleMain.
  • Fonts: IMPORTANT on Font Merging:
    • When searching for a glyph in multiple merged fonts: font inputs are now scanned in order for the first font input which the desired glyph. This is technically a different behavior than before!
    • e.g. If you are merging fonts you may have glyphs that you expected to load from Font Source 2 which exists in Font Source 1. After the update and when using a new backend, those glyphs may now loaded from Font Source 1!
    • You can use Metrics/Debugger->Fonts->Font->Input Glyphs Overlap Detection Tool to see list of glyphs available in multiple font sources. This can facilitate understanding which font input is providing which glyph.
    • You can use ImFontConfig::GlyphExcludeRanges[] to specify ranges to ignore in given Input:
// Add Font Source 1 but ignore ICON_MIN_FA..ICON_MAX_FA range
static ImWchar exclude_ranges[] = { ICON_MIN_FA, ICON_MAX_FA, 0 };
ImFontConfig cfg1;
cfg1.GlyphExcludeRanges = exclude_ranges;
io.Fonts->AddFontFromFileTTF(\"segoeui.ttf\", 0.0f, &cfg1);

// Add Font Source 2, which expects to use the range above
ImFontConfig cfg2;
cfg2.MergeMode = true;
io.Fonts->AddFontFromFileTTF(\"FontAwesome4.ttf\", 0.0f, &cfg2);
  • Textures:
    • All API functions taking a ImTextureID parameter are now taking a 'ImTextureRef`:
      • ImTextureRef is a small composite structure which may be constructed from a ImTextureID (or constructed from a ImTextureData* which represent a texture which will generally be ready by the time of rendering).
      • Affected functions are:
        • ImGui::Image(), ImGui::ImageWithBg(), ImGui::ImageButton(),
        • ImDrawList::AddImage(), ImDrawList::AddImageQuad(), ImDrawList::AddImageRounded().
      • We suggest that C users and any higher-level language bindings generators may facilitate converting this in some way, aka emulating the trivial C++ constructor.
  • Fonts: obsoleted ImFontAtlas::GetTexDataAsRGBA32(), GetTexDataAsAlpha8(), Build(), SetTexID() and IsBuilt() functions. The new protocol for backends to handle textures doesn't need them. Kept redirection functions (will obsolete).
    • A majority of o...
Read more

2.2.7 Dear ImGui 1.91.9b

04 Apr 12:02

Choose a tag to compare

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 ...
Read more

2.2.6 Dear ImGui 1.91.8

06 Feb 20:56

Choose a tag to compare

Hexa.NET.ImGui Changes

  • Updated to Dear ImGui 1.91.8

πŸŽ‰ Thanks to all recurring supporters

  • Mr Villa

Forwarded from https://github.com/ocornut/imgui/releases/tag/v1.91.8 (removed @ to avoid spam)

Changes (since v1.91.7)

Breaking Changes:

  • ColorEdit, ColorPicker: redesigned how alpha is displayed in the preview square. (#8335, #1578, #346)
    • Removed ImGuiColorEditFlags_AlphaPreview (made value 0): it is now the default behavior.
    • Prior to 1.91.8: alpha was made opaque in the preview by default unless using ImGuiColorEditFlags_AlphaPreview.
    • We now display the preview as transparent by default. You can use ImGuiColorEditFlags_AlphaOpaque to use old behavior.
    • The new flags may be combined better and allow finer controls:
      • ImGuiColorEditFlags_AlphaOpaque: disable alpha in the preview, but alpha value still editable.
      • ImGuiColorEditFlags_AlphaNoBg: disable rendering a checkerboard background behind transparent color.
      • ImGuiColorEditFlags_AlphaPreviewHalf: display half opaque / half transparent preview.
  • Backends: SDLGPU3: Renamed ImGui_ImplSDLGPU3_InitInfo::GpuDevice to Device for consistency. (#8163, #7998, #7988)

Other changes:

  • imgui_freetype: fixed issue where glyph advances would incorrectly be snapped to pixels. Effectively it would only be noticeable when hinting is disabled with ImGuiFreeTypeBuilderFlags_NoHinting, as hinting itself snaps glyph advances.
  • Inputs: added IsMouseReleasedWithDelay() helper. (#8337, #8320). Use if you absolutely need to distinguish single-click from double-clicks by introducing a delay. This is a very rarely used UI idiom, but some apps use this: e.g. MS Explorer single-click on an icon triggers a rename. Generally use with delay >= io.MouseDoubleClickTime + combine with a GetMouseClickedCount() == 1 check.
  • Windows: legacy SetWindowFontScale() is properly inherited by nested child windows. Note that an upcoming major release should make this obsolete, but in the meanwhile it works better now. (#2701, #8138, #1018)
  • Windows, Style: Fixed small rendering issues with menu bar, resize grip and scrollbar when using thick border sizes. (#8267, #7887)
  • Windows: Fixed IsItemXXXX() functions not working on append-version of EndChild(). (#8350) Also made some of the fields accessible after BeginChild() to match Begin() logic.
  • Error Handling: Recovery from missing EndMenuBar() call. (#1651)
  • Tables, Menus: Fixed using BeginTable() in menu layer (any menu bar). (#8355) It previously overrode the current layer back to main layer, which caused an issue with MainMenuBar attempted to release focus when leaving the menu layer.
  • Tables, Menus: Fixed tables or child windows submitted inside BeginMainMenuBar() being unable to save their settings, as the main menu bar uses ImGuiWindowFlags_NoSavedSettings. (#8356)
  • ColorEdit, ColorPicker: Fixed alpha preview broken in 1.91.7. (#8336, #8241). [PathogenDavid]
  • Tabs, Style: reworked selected overline rendering to better accommodate for rounded tabs. Reduced default thickness (style.TabBarOverlineSize), increased default rounding (style.TabRounding). (#8334) [Kian738, ocornut]
  • Debug Tools: Tweaked font preview.
  • ImDrawList: texture baked storage for thick line reduced from ~64x64 to ~32x32. (#3245)
  • Fonts: IndexLookup[] table hold 16-bit values even in ImWchar32 mode, as it accounts for number of glyphs in same font. This is favorable to CalcTextSize() calls touching less memory.
  • Fonts: OversampleH/OversampleV defaults to 0 for automatic selection.
    • OversampleH == 0 --> use 1 or 2 depending on font size and use of PixelSnapH.
    • OversampleV == 0 --> always use 1.
  • ImFontAtlas: made calling ClearFonts() call ClearInputData(), as calling one without the other is never correct. (#8174, #6556, #6336, #4723)
  • Examples: DirectX12: Reduced number of frame in flight from 3 to 2 in provided example, to reduce latency.
  • Examples: Vulkan: better handle VK_SUBOPTIMAL_KHR being returned by vkAcquireNextImageKHR() or vkQueuePresentKHR(). (#7825, #7831) [NostraMagister]
  • Backends: SDL2: removed assert preventing using ImGui_ImplSDL2_SetGamepadMode() with ImGui_ImplSDL2_GamepadMode_Manual and an empty array. (#8329)
  • Backends: SDL3: removed assert preventing using ImGui_ImplSDL3_SetGamepadMode() with ImGui_ImplSDL3_GamepadMode_Manual and an empty array. (#8329)
  • Backends: SDLGPU3: Exposed ImGui_ImplSDLGPU3_CreateDeviceObjects()/_DestroyDeviceObjects().
    Removed return value from ImGui_ImplSDLGPU3_CreateFontsTexture(). (#8163, #7998, #7988)
  • Backends: SDL_Renderer2/3: Use endian-dependent RGBA32 texture format, to match SDL_Color. (#8327) [dkosmari]
  • Backends: DirectX12: Texture upload use the command queue provided in ImGui_ImplDX12_InitInfo instead of creating its own.
  • Backends: OSX: Removed notification observer when shutting down. (#8331) [jrachele]

Changes from 1.91.7 to 1.91.8 specific to the Docking+Multi-Viewports branch:

  • Docking: Fixed an issue in 1.91.7 where using legacy ImGuiWindowFlags_NavFlattened flag (instead of ImGuiChildFlags_NavFlattened) in docking branch would conflict with internal docking flags. (#8357) [DanielGibson]
  • Backends: SDL3: new viewport windows are created with the SDL_WINDOW_HIDDEN flag before calling SDL_ShowWindow(). (#8328) [PathogenDavid]

2.2.5 Dear ImGui 1.91.7

25 Jan 15:32

Choose a tag to compare

Hexa.NET.ImGui Changes

  • Updated to Dear ImGui 1.91.7

Forwarded from https://github.com/ocornut/imgui/releases/tag/v1.91.7 (removed @ to avoid spam)

Changes (since v1.91.6)

Breaking Changes:

  • TreeNode: renamed ImGuiTreeNodeFlags_SpanTextWidth to ImGuiTreeNodeFlags_SpanLabelWidth for consistency with other names. Kept redirection enum (will obsolete). (#6937)

Other changes:

  • Fixed issues with IsItemDeactivated() and IsItemDeactivatedAfterEdit() not emitting a reliable signal when an item is deactivated externally: e.g. via an explicit clear of focus, clear of active id, opening of modal etc. (#5184, #5904, #6766, #8303, #8004)
    • It used to work when the interruption happened in the frame before the active item as submitted, but not after. It should work in both cases now.
    • While this is not specific to a certain widgets, typically it would mostly be noticeable on InputText() because it keeps ActiveId for a longer time while allowing other interaction to happen.
  • Error Handling: Fixed bugs recovering from within a table that created a child window, and from nested child windows. (#1651)
  • Error Handling: Turned common EndTable() and other TableXXX functions fail cases into a recoverable error. (#1651, #8314)
  • Error Handling: Exposed basic error handling options in Demo->Tools->Debug Options. (#1651)
  • InputText: Fixed a bug where character replacements performed from a callback were not applied when pasting from clipboard. (#8229)
  • InputText: Fixed issue when activating a ReadOnly field when the underlying value is being modified. (#8242)
  • InputText: Added sanity check to detect some cases of passing a non zero-terminated input buffer.
  • InputText: Fixed not calling CallbackEdit on revert/clear with Escape key, although IsItemEdited() was behaving correctly. (#8273)
  • Tables: Fixed TableAngledHeadersRow() creating an infinite horizontal scrolling region when the table is hosted in a viewport with negative coordinates (left of primary monitor, with multi-viewports enabled).
  • Tables, MultiSelect: Fixed an issue where column width may be miss-measured when calling BeginMultiSelect() while inside a table. (#8250)
  • TreeNode, Tables: Added ImGuiTreeNodeFlags_LabelSpanAllColumns to make the label (not only the highlight/frame) also spans all columns. This is useful for table rows where you know nothing else is submitted. (#8318, #3565) (Obviously best used with ImGuiTableFlags_NoBordersInBodyUntilResize).
  • Drags: Added ImGuiSliderFlags_NoSpeedTweaks flag to disable keyboard modifiers altering the tweak speed. Useful if you want to alter tweak speed yourself based on your own logic. (#8223)
  • Nav: Fixed an issue where Alt key would clear current active item on windows with the ImGuiWindowFlags_NoNavInputs flag. (#8231)
  • Debug Tools: Debug Log: hovering 0xXXXXXXXX values in log is allowed even if a popup is blocking mouse access to the debug log window. (#5855)
  • Debug Tools: Item Picker: Always available in Tools menu regardless of value of io.ConfigDebugIsDebuggerPresent. (#2673)
  • Fonts: Fixed miscalculation of Ellipsis ("...") character width when automatically created from a single comma character, affecting some fonts/settings (not all).
  • Demo: Added label edition to Property Editor demo + fix an ID issue. (#8266) [moritz-h]
  • Misc: Fixed misc/cpp/imgui_stdlib.h/.cpp not supporting #define IMGUI_DISABLE. (#8294) [juur]
  • Misc: Fixed MinGW builds not using UTF-8 friendly _wfopen(). (#8300)
  • Backends: SDL_GPU for SDL3: Added backend for SDL_GPU! (#8163, #7998, #7988) [DeltaW0x].
  • Backends: SDL3: Added ImGui_ImplSDL3_InitForSDLGPU() for consistency, even though it is currently not doing anything particular. (#8163, #7998, #7988)
  • Backends: Allegro5: Avoid calling al_set_mouse_cursor() repeatedly since it appears to leak on on X11 (#8256). [Helodity]
  • Backends: Metal: Fixed leaks when using metal-cpp. (#8276, #8166) [selimsandal]
  • Backends: Metal: Fixed resource leak when using multiple contexts. (#7419) [anszom]
  • Backends: Vulkan: Fixed setting VkSwapchainCreateInfoKHR::preTransform for platforms not supporting VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR. (#8222) [Zer0xFF]
  • Backends: Vulkan: Added a few more ImGui_ImplVulkanH_XXX helper functions primarily for the purpose of making our examples simpler.
  • Backends: Vulkan: Added IMGUI_IMPL_VULKAN_MINIMUM_IMAGE_SAMPLER_POOL_SIZE to clarify how many image sampler descriptors are expected to be available in the provided descriptor pool. Current backend needs 1 but it is expected that by end of Q1 2025 this number will grow (will stay a small number). (#6642)
  • Backends: DX11: Expose vertex constant buffer in ImGui_ImplDX11_RenderState.
    Reset projection matrix in ImDrawCallback_ResetRenderState handlers. (#6969, #5834, #7468, #3590)
  • Backends: DX10: Expose ImGui_ImplDX10_RenderState for completeness. (#6969, #5834, #7468, #3590)
  • Examples: Added Win32+Vulkan example for completeness. (#8180) [jristic]

ImGuiTreeNodeFlags_LabelSpanAllColumns2

2.2.4 Dear ImGui 1.91.6 + static link support

13 Dec 14:20
2240c48

Choose a tag to compare

Hexa.NET.ImGui Changes

  • Updated to Dear ImGui 1.91.6
  • Fixed #31
  • Added static link support.

New Sponsors

πŸŽ‰ Huge thanks to our newest supporter:
@TheSameCat2


Forwarded from https://github.com/ocornut/imgui/releases/tag/v1.91.6 (removed @ to avoid spam)

Changes (since v1.91.5)

This is an unusual small release. It is mostly motivated by the fact that the Win32 backend in docking branch of v1.91.5 had a crash when running multiple program instances. Most of the work done this month is part of a larger feature I will talk about later :)

Breaking Changes:

  • Backends: DX12: Changed ImGui_ImplDX12_Init() signature to take a ImGui_ImplDX12_InitInfo struct.
    • Using the new API, application is now required to pass function pointers to allocate/free SRV Descriptors.
    • We provide convenience legacy fields to pass a single descriptor, matching the old API, but upcoming features will want multiple.
    • Legacy ImGui_ImplDX12_Init() signature is still supported (will obsolete).
  • Misc: changed CRC32 table from CRC32-adler to CRC32c polynomial in order to be compatible with the result of SSE 4.2 instructions. (#8169, #4933) [Teselka]
    • As a result, some .ini data may be partially lost when storing checksums (docking and tables information particularly).
    • Because some users have crafted and storing .ini data as a way to workaround limitations of the docking API, we are providing a #define IMGUI_USE_LEGACY_CRC32_ADLER compile-time option to keep using old CRC32 tables if you cannot afford invalidating old .ini data.

Other changes:

  • InputText: added ImGuiInputTextFlags_ElideLeft to elide left side and ensure right side of contents is visible when whole text is not fitting (useful for paths/filenames). (#1442, #1440, #4391, #7208, #8216) [kucoman, ocornut]
  • InputText: reactivating last activated InputText() doesn't restore horizontal scrolling (which was disabled during deactivation anyway).
  • Error Handling: fixed cases where recoverable error handling would crash when processing errors outside of the NewFrame()..EndFrame() scope. (#1651)
  • Tables: fixed SetNextWindowScroll() value being ignored by BeginTable() during the first frame or when scrolling flags have changed. (#8196)
  • Misc: changed embedded ProggyClean encoding to save a bit of binary space (~12kb to 9.5kb).
  • Misc: added IMGUI_DISABLE_DEFAULT_FONT to strip embedded font from binary. (#8161) [demonese]
  • Demo: example tree used by Property Editor & Selection demos properly freed on application closure. (#8158) [Legulysse]
  • Fonts: fixed AddCustomRect() not being packed with TexGlyphPadding + not accounted for surface area used to determine best-guess texture size. (#8107) [YarikTH, ocornut]
  • Misc: use SSE 4.2 crc32 instructions when available. (#8169, #4933) [Teselka]
  • Tools: binary_to_compressed_c: added -u8/-u32/-base85 export options.
  • Backends: DirectX12: Let user specifies the DepthStencilView format by setting ImGui_ImplDX12_InitInfo::DSVFormat. (#8217) [bmarques1995]
  • Backends: Vulkan: Make user-provided descriptor pool optional. As a convenience, when setting init_info->DescriptorPoolSize then the backend will create and manage one itself. (#8172, #4867) [zeux]
  • Examples: Win32+DX12: Using a basic free-list allocator to manage multiple SRV descriptors.

Changes from 1.91.5 to 1.91.6 in the Docking branch:

  • Backends: Win32: Fixed a crash/regression in 1.91.5 when running two processes with multi-viewports (was using GetProp() to query property which could have belonged to another process). (#8162, #8069) [sammyfreg, ocornut]
  • Docking: Added an assert to clarify that ImGuiDockNodeFlags_CentralNode flag (from internals) does not need to be passed to DockSpace(), as it causes general havoc. (#8145)

2.2.2 .NET 9.0 and 6.0 support.

14 Nov 14:12

Choose a tag to compare

  • 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)

11 Nov 01:33

Choose a tag to compare

  • 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.

09 Nov 18:19
9f3ed0d

Choose a tag to compare

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 or IMGUI_DISABLE_OBSOLETE_FUNCTIONS before).
    • io.KeyMap[] and io.KeysDown[] are removed (obsoleted February 2022).
    • io.NavInputs[] and ImGuiNavInput enum are removed (obsoleted July 2022).
    • Pre-1.87 backends are not supported:
      • backends need to call io.AddKeyEvent(), io.AddMouseEvent() instead of writing to io.KeysDown[], io.MouseDown[] fields.
      • backends need to call io.AddKeyAnalogEvent() for gamepad values instead of writing to io.NavInputs[] fields.
    • For more references:
    • 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 use ImGuiKey_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 use ImGuiCol_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 (but ImGuiCol_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() and TabItem() 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 of ALooper_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 with DockSpaceOverViewport(): the normally invisible space did erroneously claim mouse hover and could be potentially focused. (#8125) [kcbanner]

How the output of io.ConfigWindowsCopyContentsWithCtrlC looks:

window ctrl-c (3)