In a project using the Common UI plugin, I have implemented a HUD element as a subclass of CommonButtonBase (for easy “hold this button for X seconds to activate” support).
Per the default value, FUIActionBinding::bConsumesInput is set to true when this button registers the input action for handling.
However, if the assigned input action is set up to require a Hold before triggering, what I see is that the input is consumed only on the first and last tick of the Hold. For every intermediate tick while the button is held down, the input is NOT consumed.
This behavior is caused by by FUIActionBinding::UpdateHold(float TargetHoldTime), which returns false (i.e. the input was not handled and thus should not be consumed) on any tick where the Hold has not reached the desired duration.
In practice, this means that if my button tries to use the same input as a game action (e.g. by default press X to jump, but instead hold X to trigger a mechanism if my HUD element is shown), then the unconsumed intermediate input events will trigger that jump while the hold is also busy trying to trigger the mechanism!
In my mind, the intermediate ticks should be consumed by the Hold input the same way that the first and last ticks are being consumed. I can get my desired behavior by changing UpdateHold() to always return true (i.e. the hold itself should consume all intermediate input ticks).
Is there a scenario for which NOT consuming the intermediate ticks would be correct, or is this an oversight / bug in CommonUI?