From 17b1326a905d3c952dc391bc84182c0cd8c530ab Mon Sep 17 00:00:00 2001 From: Bixilon Date: Sun, 25 Dec 2022 18:24:45 +0100 Subject: [PATCH] input handler: fix unpressing keys when consumer is set --- .../rendering/input/key/RenderWindowInputHandler.kt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/input/key/RenderWindowInputHandler.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/input/key/RenderWindowInputHandler.kt index 0cb56e1ab..81a253bfa 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/input/key/RenderWindowInputHandler.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/input/key/RenderWindowInputHandler.kt @@ -63,6 +63,9 @@ class RenderWindowInputHandler( val interactionManager = InteractionManager(context) var inputHandler: InputHandler? = null set(value) { + if (field == value) { + return + } field = value deactivateAll() @@ -132,9 +135,8 @@ class RenderWindowInputHandler( keysDown.clear() keysLastDownTime.clear() - val iterator = keyBindingCallbacks.iterator() - for ((name, pair) in iterator) { - val down = keyBindingsDown.contains(name) + for ((name, pair) in keyBindingCallbacks) { + val down = name in keyBindingsDown if (!down || pair.defaultPressed) { continue } @@ -151,7 +153,7 @@ class RenderWindowInputHandler( for (callback in pair.callback) { callback(false) } - iterator.remove() + keyBindingsDown -= name } }