diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c3a30d..f1a4c48 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ # Marble Machinations Change Log Game store page: https://crispypin.itch.io/marble-machinations +## [unreleased] +### fixed +- after removing a binding that was a superset of another, the remaining one did not stop being blocked by the removed ones additional modifiers until another binding was added or edited + ## v0.3.2 - 2025-04-14 ### added - "weird machines" chapter with levels for [deadfish](https://esolangs.org/wiki/Deadfish) and [brainfuck](https://esolangs.org/wiki/Brainfuck) @@ -10,7 +14,7 @@ Game store page: https://crispypin.itch.io/marble-machinations ### fixed - invalid action ids in the config file key bindings caused everything to revert to default. - when start and stop are bound to the same thing (as by default), only start works -- When two input bindings had the same trigger but one has a strict subset of the others modifiers, both would activate when the one with more modifiers was pressed. For example (Ctrl+S -> Save) would also trigger (S -> Wire Tool). Now, Shift+S will still trigger Wire Tool, unless Shift+S (or eg. Shift+Ctrl+S) is bound to something else. +- when two input bindings had the same trigger but one has a strict subset of the others modifiers, both would activate when the one with more modifiers was pressed. For example (Ctrl+S -> Save) would also trigger (S -> Wire Tool). Now, Shift+S will still trigger Wire Tool, unless Shift+S (or eg. Shift+Ctrl+S) is bound to something else. ## v0.3.1 - 2025-04-05 ### fixed diff --git a/src/input.rs b/src/input.rs index 1353373..927790d 100644 --- a/src/input.rs +++ b/src/input.rs @@ -144,6 +144,7 @@ impl Input { for (binding_index, binding) in self.bindings[action_index].iter().enumerate() { if text_button(d, &globals.mouse, buttons_x, y, 80, "remove") { self.bindings[action_index].remove(binding_index); + self.update_modifier_blocks(); return; } if text_button(d, &globals.mouse, buttons_x + 85, y, 45, "edit") {