CHANGELOG.txt (imgui-1.86) | : | CHANGELOG.txt (imgui-1.87) | ||
---|---|---|---|---|
skipping to change at line 34 | skipping to change at line 34 | |||
- Read the `Breaking Changes` section (in imgui.cpp or here in the Changelog). | - Read the `Breaking Changes` section (in imgui.cpp or here in the Changelog). | |||
- If you have a problem with a missing function/symbols, search for its name in the code, there will likely be a comment about it. | - If you have a problem with a missing function/symbols, search for its name in the code, there will likely be a comment about it. | |||
- If you are dropping this repository in your codebase, please leave the demo an d text files in there, they will be useful. | - If you are dropping this repository in your codebase, please leave the demo an d text files in there, they will be useful. | |||
- You may diff your previous Changelog with the one you just copied and read tha t diff. | - You may diff your previous Changelog with the one you just copied and read tha t diff. | |||
- You may enable `IMGUI_DISABLE_OBSOLETE_FUNCTIONS` in imconfig.h to forcefully disable legacy names and symbols. | - You may enable `IMGUI_DISABLE_OBSOLETE_FUNCTIONS` in imconfig.h to forcefully disable legacy names and symbols. | |||
Doing it every once in a while is a good way to make sure you are not using ob solete symbols. Dear ImGui is in active development, | Doing it every once in a while is a good way to make sure you are not using ob solete symbols. Dear ImGui is in active development, | |||
and API updates have been a little more frequent lately. They are documented b elow and in imgui.cpp and should not affect all users. | and API updates have been a little more frequent lately. They are documented b elow and in imgui.cpp and should not affect all users. | |||
- Please report any issue! | - Please report any issue! | |||
----------------------------------------------------------------------- | ----------------------------------------------------------------------- | |||
VERSION 1.87 (Released 2022-02-07) | ||||
----------------------------------------------------------------------- | ||||
Decorated log: https://github.com/ocornut/imgui/releases/tag/v1.87 | ||||
Breaking Changes: | ||||
- Removed support for pre-C++11 compilers. We'll stop supporting VS2010. (#4537) | ||||
- Reworked IO mouse input API: (#4921, #4858) [@thedmd, @ocornut] | ||||
- Added io.AddMousePosEvent(), io.AddMouseButtonEvent(), io.AddMouseWheelEvent | ||||
() functions, | ||||
obsoleting writing directly to io.MousePos, io.MouseDown[], io.MouseWheel, e | ||||
tc. | ||||
- This enable input queue trickling to support low framerates. (#2787, #1992, | ||||
#3383, #2525, #1320) | ||||
- Reworked IO keyboard input API: (#4921, #2625, #3724) [@thedmd, @ocornut] | ||||
- Added io.AddKeyEvent() function, obsoleting writing directly to io.KeyMap[], | ||||
io.KeysDown[] arrays. | ||||
- For keyboard modifiers, you can call io.AddKeyEvent() with ImGuiKey_ModXXX v | ||||
alues, | ||||
obsoleting writing directly to io.KeyCtrl, io.KeyShift etc. | ||||
- Added io.SetKeyEventNativeData() function (optional) to pass native and old | ||||
legacy indices. | ||||
- Added full range of key enums in ImGuiKey (e.g. ImGuiKey_F1). | ||||
- Added GetKeyName() helper function. | ||||
- Obsoleted GetKeyIndex(): it is now unnecessary and will now return the same | ||||
value. | ||||
- All keyboard related functions taking 'int user_key_index' now take 'ImGuiKe | ||||
y key': | ||||
- IsKeyDown(), IsKeyPressed(), IsKeyReleased(), GetKeyPressedAmount(). | ||||
- Added io.ConfigInputTrickleEventQueue (defaulting to true) to disable input | ||||
queue trickling. | ||||
- Backward compatibility: | ||||
- All backends updated to use new functions. | ||||
- Old backends populating those arrays should still work! | ||||
- Calling e.g. IsKeyPressed(MY_NATIVE_KEY_XXX) will still work! (for a while | ||||
) | ||||
- Those legacy arrays will only be disabled if '#define IMGUI_DISABLE_OBSOLE | ||||
TE_KEYIO' is set in your imconfig. | ||||
In a few versions, IMGUI_DISABLE_OBSOLETE_FUNCTIONS will automatically ena | ||||
ble IMGUI_DISABLE_OBSOLETE_KEYIO, | ||||
so this will be moved into the regular obsolescence path. | ||||
- BREAKING: If your custom backend used ImGuiKey as mock native indices (e.g | ||||
. "io.KeyMap[ImGuiKey_A] = ImGuiKey_A") | ||||
this is a use case that will now assert and be breaking for your old backe | ||||
nd. | ||||
- Transition guide: | ||||
- IsKeyPressed(MY_NATIVE_KEY_XXX) -> use IsKeyPressed(ImGuiKey_XX | ||||
X) | ||||
- IsKeyPressed(GetKeyIndex(ImGuiKey_XXX)) -> use IsKeyPressed(ImGuiKey_XX | ||||
X) | ||||
- Backend writing to io.KeyMap[],KeysDown[] -> backend should call io.AddKe | ||||
yEvent(), if legacy indexing is desired, call io.SetKeyEventNativeData() | ||||
- Basically the trick we took advantage of is that we previously only suppo | ||||
rted native keycode from 0 to 511, | ||||
so ImGuiKey values can still express a legacy native keycode, and new nam | ||||
ed keys are all >= 512. | ||||
- This will enable a few things in the future: | ||||
- Access to portable keys allows for backend-agnostic keyboard input code. | ||||
Until now it was difficult | ||||
to share code using keyboard across project because of this gap. (#2625, | ||||
#3724) | ||||
- Access to full key ranges will allow us to develop a proper keyboard shor | ||||
tcut system. (#456) | ||||
- io.SetKeyEventNativeData() include native keycode/scancode which may late | ||||
r be exposed. (#3141, #2959) | ||||
- Reworked IO nav/gamepad input API and unifying inputs sources: (#4921, #4858, | ||||
#787) | ||||
- Added full range of ImGuiKey_GamepadXXXX enums (e.g. ImGuiKey_GamepadDpadUp, | ||||
ImGuiKey_GamepadR2) to use with | ||||
io.AddKeyEvent(), io.AddKeyAnalogEvent(). | ||||
- Added io.AddKeyAnalogEvent() function, obsoleting writing directly to io.Nav | ||||
Inputs[] arrays. | ||||
- Renamed ImGuiKey_KeyPadEnter to ImGuiKey_KeypadEnter to align with new symbols | ||||
. Kept redirection enum. (#2625) | ||||
- Removed support for legacy arithmetic operators (+,+-,*,/) when inputing text | ||||
into a slider/drag. (#4917, #3184) | ||||
This doesn't break any api/code but a feature that was accessible by end-users | ||||
(which seemingly no one used). | ||||
(Instead you may implement custom expression evaluators to provide a better ve | ||||
rsion of this). | ||||
- Backends: GLFW: backend now uses glfwSetCursorPosCallback(). | ||||
- If calling ImGui_ImplGlfw_InitXXX with install_callbacks=true: nothing to do | ||||
. is already done for you. | ||||
- If calling ImGui_ImplGlfw_InitXXX with install_callbacks=false: you WILL NEE | ||||
D to register the GLFW callback | ||||
using glfwSetCursorPosCallback() and forward it to the backend function ImGu | ||||
i_ImplGlfw_CursorPosCallback(). | ||||
- Backends: SDL: Added SDL_Renderer* parameter to ImGui_ImplSDL2_InitForSDLRende | ||||
rer(), so backend can call | ||||
SDL_GetRendererOutputSize() to obtain framebuffer size valid for hi-dpi. (#492 | ||||
7) [@Clownacy] | ||||
- Commented out redirecting functions/enums names that were marked obsolete in 1 | ||||
.69, 1.70, 1.71, 1.72 (March-July 2019) | ||||
- ImGui::SetNextTreeNodeOpen() -> use ImGui::SetNextItemOpen() | ||||
- ImGui::GetContentRegionAvailWidth() -> use ImGui::GetContentRegionAvail().x | ||||
- ImGui::TreeAdvanceToLabelPos() -> use ImGui::SetCursorPosX(ImGui::GetCu | ||||
rsorPosX() + ImGui::GetTreeNodeToLabelSpacing()); | ||||
- ImFontAtlas::CustomRect -> use ImFontAtlasCustomRect | ||||
- ImGuiColorEditFlags_RGB/HSV/HEX -> use ImGuiColorEditFlags_DisplayRGB/HS | ||||
V/Hex | ||||
- Removed io.ImeSetInputScreenPosFn() in favor of more flexible io.SetPlatformIm | ||||
eDataFn() for IME support. | ||||
Because this field was mostly only ever used by Dear ImGui internally, not by | ||||
backends nor the vast majority | ||||
of user code, this should only affect a very small fraction for users who are | ||||
already very IME-aware. | ||||
- Obsoleted 'void* io.ImeWindowHandle' in favor of writing to 'void* ImGuiViewpo | ||||
rt::PlatformHandleRaw'. | ||||
This removes an incompatibility between 'master' and 'multi-viewports' backend | ||||
s and toward enabling | ||||
better support for IME. Updated backends accordingly. Because the old field is | ||||
set by existing backends, | ||||
we are keeping it (marked as obsolete). | ||||
Other Changes: | ||||
- IO: Added event based input queue API, which now trickles events to support lo | ||||
w framerates. [@thedmd, @ocornut] | ||||
Previously the most common issue case (button presses in low framerates) was h | ||||
andled by backend. This is now | ||||
handled by core automatically for all kind of inputs. (#4858, #2787, #1992, #3 | ||||
383, #2525, #1320) | ||||
- New IO functions for keyboard/gamepad: AddKeyEvent(), AddKeyAnalogEvent(). | ||||
- New IO functions for mouse: AddMousePosEvent(), AddMouseButtonEvent(), AddMo | ||||
useWheelEvent(). | ||||
- IO: Unified key enums allow using key functions on key mods and gamepad values | ||||
. | ||||
- Fixed CTRL+Tab into an empty window causing artifacts on the highlight rectang | ||||
le due to bad reordering on ImDrawCmd. | ||||
- Fixed a situation where CTRL+Tab or Modal can occasionally lead to the creatio | ||||
n of ImDrawCmd with zero triangles, | ||||
which would makes the draw operation of some backends assert (e.g. Metal with | ||||
debugging). (#4857) | ||||
- Popups: Fixed a regression crash when a new window is created after a modal on | ||||
the same frame. (#4920) [@rokups] | ||||
- Popups: Fixed an issue when reopening a same popup multiple times would offset | ||||
them by 1 pixel on the right. (#4936) | ||||
- Tables, ImDrawListSplitter: Fixed erroneously stripping trailing ImDrawList::A | ||||
ddCallback() when submitted in | ||||
last column or last channel and when there are no other drawing operation. (#4 | ||||
843, #4844) [@hoffstadt] | ||||
- Tables: Fixed positioning of Sort icon on right-most column with some settings | ||||
(not resizable + no borders). (#4918). | ||||
- Nav: Fixed gamepad navigation in wrapping popups not wrapping all the way. (#4 | ||||
365) | ||||
- Sliders, Drags: Fixed text input of values with a leading sign, common when us | ||||
ing a format enforcing sign. (#4917) | ||||
- Demo: draw a section of keyboard in "Inputs > Keyboard, Gamepad & Navigation s | ||||
tate" to visualize keys. [@thedmd] | ||||
- Platform IME: changed io.ImeSetInputScreenPosFn() to io.SetPlatformImeDataFn() | ||||
API, | ||||
now taking a ImGuiPlatformImeData structure which we can more easily extend in | ||||
the future. | ||||
- Platform IME: moved io.ImeWindowHandle to GetMainViewport()->PlatformHandleRaw | ||||
. | ||||
- Platform IME: add ImGuiPlatformImeData::WantVisible, hide IME composition wind | ||||
ow when not used. (#2589) [@actboy168] | ||||
- Platform IME: add ImGuiPlatformImeData::InputLineHeight. (#3113) [@liuliu] | ||||
- Platform IME: [windows] call ImmSetCandidateWindow() to position candidate win | ||||
dow. | ||||
- Backends: GLFW: Pass localized keys (matching keyboard layout). Fix e.g. CTRL+ | ||||
A, CTRL+Z, CTRL+Y shortcuts. | ||||
We are now converting GLFW untranslated keycodes back to translated keycodes i | ||||
n order to match the behavior of | ||||
other backend, and facilitate the use of GLFW with lettered-shortcuts API. (#4 | ||||
56, #2625) | ||||
- Backends: GLFW: Submit keys and key mods using io.AddKeyEvent(). (#2625, #4921 | ||||
) | ||||
- Backends: GLFW: Submit mouse data using io.AddMousePosEvent(), io.AddMouseButt | ||||
onEvent(), io.AddMouseWheelEvent() functions. (#4921) | ||||
- Backends: GLFW: Retrieve mouse position using glfwSetCursorPosCallback() + fal | ||||
lback when focused but not hovered/captured. | ||||
- Backends: GLFW: Submit gamepad data using io.AddKeyEvent/AddKeyAnalogEvent() f | ||||
unctions, stopped writing to io.NavInputs[]. (#4921) | ||||
- Backends: GLFW: Added ImGui_ImplGlfw_InstallCallbacks()/ImGui_ImplGlfw_Restore | ||||
Callbacks() helpers to facilitate user installing | ||||
callbacks after iniitializing backend. (#4981) | ||||
- Backends: Win32: Submit keys and key mods using io.AddKeyEvent(). (#2625, #492 | ||||
1) | ||||
- Backends: Win32: Retrieve mouse position using WM_MOUSEMOVE/WM_MOUSELEAVE + fa | ||||
llback when focused but not hovered/captured. | ||||
- Backends: Win32: Submit mouse data using io.AddMousePosEvent(), AddMouseButton | ||||
Event(), AddMouseWheelEvent() functions. (#4921) | ||||
- Backends: Win32: Maintain a MouseButtonsDown mask instead of using ImGui::IsAn | ||||
yMouseDown() which will be obsoleted. | ||||
- Backends: Win32: Submit gamepad data using io.AddKeyEvent/AddKeyAnalogEvent() | ||||
functions, stopped writing to io.NavInputs[]. (#4921) | ||||
- Backends: SDL: Pass localized keys (matching keyboard layout). Fix e.g. CTRL+A | ||||
, CTRL+Z, CTRL+Y shortcuts. (#456, #2625) | ||||
- Backends: SDL: Submit key data using io.AddKeyEvent(). Submit keymods using io | ||||
.AddKeyModsEvent() at the same time. (#2625) | ||||
- Backends: SDL: Retrieve mouse position using SDL_MOUSEMOTION/SDL_WINDOWEVENT_L | ||||
EAVE + fallback when focused but not hovered/captured. | ||||
- Backends: SDL: Submit mouse data using io.AddMousePosEvent(), AddMouseButtonEv | ||||
ent(), AddMouseWheelEvent() functions. (#4921) | ||||
- Backends: SDL: Maintain a MouseButtonsDown mask instead of using ImGui::IsAnyM | ||||
ouseDown() which will be obsoleted. | ||||
- Backends: SDL: Submit gamepad data using io.AddKeyEvent/AddKeyAnalogEvent() fu | ||||
nctions, stopped writing to io.NavInputs[]. (#4921) | ||||
- Backends: Allegro5: Submit keys using io.AddKeyEvent(). Submit keymods using i | ||||
o.AddKeyModsEvent() at the same time. (#2625) | ||||
- Backends: Allegro5: Submit mouse data using io.AddMousePosEvent(), AddMouseBut | ||||
tonEvent(), AddMouseWheelEvent() functions. (#4921) | ||||
- Backends: OSX: Submit keys using io.AddKeyEvent(). Submit keymods using io.Add | ||||
KeyModsEvent() at the same time. (#2625) | ||||
- Backends: OSX: Submit mouse data using io.AddMousePosEvent(), AddMouseButtonEv | ||||
ent(), AddMouseWheelEvent() functions. (#4921) | ||||
- Backends: OSX: Submit gamepad data using io.AddKeyEvent/AddKeyAnalogEvent() fu | ||||
nctions, stopped writing to io.NavInputs[]. (#4921) | ||||
- Backends: OSX: Added basic Platform IME support. (#3108, #2598) [@liuliu] | ||||
- Backends: OSX: Fix Game Controller nav mapping to use shoulder for both focusi | ||||
ng and tweak speed. (#4759) | ||||
- Backends: OSX: Fix building with old Xcode versions that are missing gamepad f | ||||
eatures. [@rokups] | ||||
- Backends: OSX: Forward keyDown/keyUp events to OS when unused by Dear ImGui. | ||||
- Backends: Android, GLUT: Submit keys using io.AddKeyEvent(). Submit keymods us | ||||
ing io.AddKeyModsEvent() at the same time. (#2625) | ||||
- Backends: Android, GLUT: Submit mouse data using io.AddMousePosEvent(), AddMou | ||||
seButtonEvent(), AddMouseWheelEvent() functions. (#4858) | ||||
- Backends: OpenGL3: Fixed a buffer overflow in imgui_impl_opengl3_loader.h init | ||||
(added in 1.86). (#4468, #4830) [@dymk] | ||||
It would generally not have noticeable side-effect at runtime but would be det | ||||
ected by runtime checkers. | ||||
- Backends: OpenGL3: Fix OpenGL ES2 includes on Apple systems. [@rokups] | ||||
- Backends: Metal: Added Apple Metal C++ API support. (#4824, #4746) [@luigifcru | ||||
z] | ||||
Enable with '#define IMGUI_IMPL_METAL_CPP' in your imconfig.h file. | ||||
- Backends: Metal: Ignore ImDrawCmd where ElemCount == 0, which are normally not | ||||
emitted by the library but | ||||
can theoretically be created by user code manipulating a ImDrawList. (#4857) | ||||
- Backends: Vulkan: Added support for ImTextureID as VkDescriptorSet, add ImGui_ | ||||
ImplVulkan_AddTexture(). (#914) [@martty] | ||||
- Backends: SDL_Renderer: Fix texture atlas format on big-endian hardware (#4927 | ||||
) [@Clownacy] | ||||
- Backends: WebGPU: Fixed incorrect size parameters in wgpuRenderPassEncoderSetI | ||||
ndexBuffer() and | ||||
wgpuRenderPassEncoderSetVertexBuffer() calls. (#4891) [@FeepsDev] | ||||
----------------------------------------------------------------------- | ||||
VERSION 1.86 (Released 2021-12-22) | VERSION 1.86 (Released 2021-12-22) | |||
----------------------------------------------------------------------- | ----------------------------------------------------------------------- | |||
Decorated log: https://github.com/ocornut/imgui/releases/tag/v1.86 | ||||
Breaking Changes: | Breaking Changes: | |||
- Removed CalcListClipping() function. Prefer using ImGuiListClipper which can r eturn non-contiguous ranges. | - Removed CalcListClipping() function. Prefer using ImGuiListClipper which can r eturn non-contiguous ranges. | |||
Please open an issue if you think you really need this function. (#3841) | Please open an issue if you think you really need this function. (#3841) | |||
- Backends: OSX: Added NSView* parameter to ImGui_ImplOSX_Init(). (#4759) [@stua rtcarnie] | - Backends: OSX: Added NSView* parameter to ImGui_ImplOSX_Init(). (#4759) [@stua rtcarnie] | |||
- Backends: Marmalade: Removed obsolete Marmalade backend (imgui_impl_marmalade. cpp) + example app. (#368, #375) | - Backends: Marmalade: Removed obsolete Marmalade backend (imgui_impl_marmalade. cpp) + example app. (#368, #375) | |||
Find last supported version at https://github.com/ocornut/imgui/wiki/Bindings | Find last supported version at https://github.com/ocornut/imgui/wiki/Bindings | |||
Other Changes: | Other Changes: | |||
skipping to change at line 132 | skipping to change at line 274 | |||
cancel event. (#4759, #4253, #1873) [@stuartcarnie] | cancel event. (#4759, #4253, #1873) [@stuartcarnie] | |||
- Backends: OSX: Add Game Controller support (need linking GameController framew ork) (#4759) [@stuartcarnie] | - Backends: OSX: Add Game Controller support (need linking GameController framew ork) (#4759) [@stuartcarnie] | |||
- Backends: WebGPU: Passing explicit buffer sizes to wgpuRenderPassEncoderSetVer texBuffer() and | - Backends: WebGPU: Passing explicit buffer sizes to wgpuRenderPassEncoderSetVer texBuffer() and | |||
wgpuRenderPassEncoderSetIndexBuffer() functions as validation layers appears t o not do what the | wgpuRenderPassEncoderSetIndexBuffer() functions as validation layers appears t o not do what the | |||
in-flux specs says. (#4766) [@meshula] | in-flux specs says. (#4766) [@meshula] | |||
----------------------------------------------------------------------- | ----------------------------------------------------------------------- | |||
VERSION 1.85 (Released 2021-10-12) | VERSION 1.85 (Released 2021-10-12) | |||
----------------------------------------------------------------------- | ----------------------------------------------------------------------- | |||
Decorated log: https://github.com/ocornut/imgui/releases/tag/v1.85 | ||||
This is the last release officially supporting C++03 and Visual Studio 2008/2010 . (#4537) | This is the last release officially supporting C++03 and Visual Studio 2008/2010 . (#4537) | |||
We expect that the next release will require a subset of the C++11 language (VS 2012~, GCC 4.8.1, Clang 3.3). | We expect that the next release will require a subset of the C++11 language (VS 2012~, GCC 4.8.1, Clang 3.3). | |||
We may use some C++11 language features but we will not use any C++ library head ers. | We may use some C++11 language features but we will not use any C++ library head ers. | |||
If you are stuck on ancient compiler you may need to stay at this version onward . | If you are stuck on ancient compiler you may need to stay at this version onward . | |||
Breaking Changes: | Breaking Changes: | |||
- Removed GetWindowContentRegionWidth() function. keep inline redirection helper . | - Removed GetWindowContentRegionWidth() function. keep inline redirection helper . | |||
Can use 'GetWindowContentRegionMax().x - GetWindowContentRegionMin().x' instea d but it's not | Can use 'GetWindowContentRegionMax().x - GetWindowContentRegionMin().x' instea d but it's not | |||
very useful in practice, and the only use of it in the demo was illfit. | very useful in practice, and the only use of it in the demo was illfit. | |||
End of changes. 3 change blocks. | ||||
0 lines changed or deleted | 244 lines changed or added |