Giter Site home page Giter Site logo

Comments (10)

pezcode avatar pezcode commented on May 22, 2024 1

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

from magnum-integration.

mosra avatar mosra commented on May 22, 2024 1

This is now fixed with #93, merged as c60149c.

from magnum-integration.

pezcode avatar pezcode commented on May 22, 2024

I'm gonna leave this here, some useful info on the why's and how's: ocornut/imgui#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.

from magnum-integration.

jvannugteren avatar jvannugteren commented on May 22, 2024

Fair enough. The "backwards compatibility" doesn't currently work for us though.

from magnum-integration.

pezcode avatar pezcode commented on May 22, 2024

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.

from magnum-integration.

pezcode avatar pezcode commented on May 22, 2024

Actually it's not as simple: ocornut/imgui#2269 (comment)

Maybe for now we have to hack around this by ifdefing around ImGuiKey_Tab being >= 512 and then subtracting ImGuiKey_NamedKey_BEGIN. Sigh 😵‍

from magnum-integration.

ocornut avatar ocornut commented on May 22, 2024

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.

from magnum-integration.

ocornut avatar ocornut commented on May 22, 2024

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.

from magnum-integration.

jvannugteren avatar jvannugteren commented on May 22, 2024

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.

from magnum-integration.

jvannugteren avatar jvannugteren commented on May 22, 2024

Many thanks. (=

from magnum-integration.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.