Closed jvannugteren closed 2 years ago
I'm gonna leave this here, some useful info on the why's and how's: https://github.com/ocornut/imgui/issues/4858. Also note this little comment from the same link:
I think we will try to make some more use of it before declaring the change valid.
Might be worth waiting until this hits a tagged release to actually add support for this, in case they pull or rework this.
Fair enough. The "backwards compatibility" doesn't currently work for us though.
Okay, I understand the immediate issue now. Regardless of the AddKeyEvent
changes, we should have been doing something like:
// at startup
io.KeyMap[ImGuiKey_Tab] = KeyEvent::Key::Tab;
// in the switch
io.KeysDown[KeyEvent::Key::Tab];
This fixes the issue of out-of-bounds indexing io.KeysDown
with the new remapped ImGuiKey
enum, and as a nice side-effect we can save ourselves the switch altogether + users get a full key map in io.KeysDown
with platform-specific keys.
The AddKeyEvent
changes need a bit more thought, since we need backwards-compatibility with older imgui versions.
Actually it's not as simple: https://github.com/ocornut/imgui/pull/2269#issuecomment-453485633
Maybe for now we have to hack around this by ifdefing around ImGuiKey_Tab
being >= 512 and then subtracting ImGuiKey_NamedKey_BEGIN
. Sigh 😵
I opened a PR that should at least fix the backward compatibility. Let me know if that works for you or doesn't (ideally on the PR page).
Indeed this is one (unusual but technically valid) use case we didn't think about when designing the backward compatibility.... Unfortunately I'm not sure how we can fix it. We will be adding new asserts to detect it + mark this specific use case as a breaking change.
Might be worth waiting until this hits a tagged release to actually add support for this, in case they pull or rework this.
FYI the Key aspect of this change IHMO at this point is a settled API. Bug/tweaks may arise before we tag 1.87 but your feedback here would be super helpful.
What will not yet committed and will come before we tag 1.87 is transitioning other inputs into event calls (e.g io.AddMouseButtonEvent()
standardizing the new IO API and allowing trickling input queue (to handle very slow framerate better). That may be pushed next week.
Sure I'll keep an eye out for issues that may emerge due to these changes. My "Rat" GUI code requires docking branch, so normally I find out when you merge the master into that.
This is now fixed with #93, merged as c60149c818bbdf61d97f30706f2018d968930718.
Many thanks. (=
In the latest version of ImGui the key events enums have shifted by 512 preventing proper capture of keys such as delete and backspace. Now the function "AddKeyEvent" has to be used to do the translation.
I think the issue can be fixed by replacing the switch in src/Magnum/ImGuiIntegration/Context.hpp file to: