ppy/osu-framework

TriggerPressed/Released doesn't follow propogation expectations.

LumpBloom7 opened this issue · 0 comments

Relevant discord thread: https://discord.com/channels/188630481301012481/589331078574112768/1167049871199584306

The RulesetInputManager sends replay actions via KeyBindingContainer.TriggerPressed/TriggerReleased.

KeyBindingContainer.TriggerPressed/Released doesn't go through the handleNewPressed/handleNewReleased flow (where the inputQueue used is trimmed as needed); Instead TriggerPressed/Released will create a completely new queue, which includes all drawables present in the hierarchy, so all active drawables get the released event (since there is nothing to stop propogation like PropogationPressed), while drawables that handled OnPressed doesn't affect the input queues used by handleNewPressed/Released

This also has an impact on touch input handling, as on screen touch receptors used by osu rulesets utilize the trigger methods as well, which may be mixed with physical key presses (in the case of sentakki)