Clear pending keystrokes after dispatching an action

Antonio Scandurra and Nathan Sobo created

Co-Authored-By: Nathan Sobo <nathan@zed.dev>

Change summary

crates/gpui/src/app.rs    | 1 +
crates/gpui/src/keymap.rs | 4 ++++
2 files changed, 5 insertions(+)

Detailed changes

crates/gpui/src/app.rs 🔗

@@ -1181,6 +1181,7 @@ impl MutableAppContext {
                 MatchResult::Action(action) => {
                     if self.dispatch_action_any(window_id, &responder_chain[0..=i], action.as_ref())
                     {
+                        self.keystroke_matcher.clear_pending();
                         return Ok(true);
                     }
                 }

crates/gpui/src/keymap.rs 🔗

@@ -93,6 +93,10 @@ impl Matcher {
         self.keymap.add_bindings(bindings);
     }
 
+    pub fn clear_pending(&mut self) {
+        self.pending.clear();
+    }
+
     pub fn push_keystroke(
         &mut self,
         keystroke: Keystroke,