-
-
Notifications
You must be signed in to change notification settings - Fork 22k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GUI declares input as handled only if it is really handled #54656
Conversation
Thanks you for this fix!! |
…() for cleaner code
@akien-mga Having to work around this bug is making my code very elaborate and complicated. |
Is this issue with Pass behaving like stop possibly related to this: |
This isn't really a bugfix, because it changes established Control behavior. It breaks compatibility and might break lots of things if it resolves #55432 too. But seems like the original behavior causes lots of confusion, so I wonder if changing it isn't maybe good. |
The intended use for "Pass" is not to behave like "Stop". Why would it? We already have "Stop" for the stop behaviour. |
Except it does pass the input, but under different rules than most people think. So the only problem is that it's unexpected. Pretty sure there was a reason for the original behavior. |
I had the exact same reaction in #54529, but by looking at the code I was not able to find this reason, except that it was a little easier to do it that way. On the topic of breaking compatibility, I agree that it may cause some problems, so we may want to wait for 3.5 or even 4.0. |
Except when it does not. Like in #55432 or #54529 The definition of a bug is not when something works, but when it does not as it should. If a programmer intentionally implements a feature in such a way it contradicts it's design and documents it, the code might work and be seen as "bug free" from the perspective of the programmer, but it still won't work and will be seen as a bug for the user as long as it contradicts the features purpose and design. |
Closing as superseded by #61088. |
See #54529.
Input events were consumed by Control nodes as long as their filter was not set to MOUSE_FILTER_IGNORE. With this change they are consumed only if the Control handles the event or its filter is set to MOUSE_FILTER_STOP. Notably MOUSE_FILTER_PASS will not consume the event. Such unhandled event will then trigger _unhandled_input methods.